+ -
当前位置:首页 → 问答吧 → 这个错误应如何修正?

这个错误应如何修正?

时间:2010-11-24

来源:互联网

var txt=new TextField();
txt.text="1";
a1.addEventListener(MouseEvent.CLICK,oo);
function oo(e:MouseEvent) {
       a2.addEventListener(MouseEvent.CLICK,o);
       function o(e:MouseEvent) {
              this["a3"].buttonMode=true;//如果没错的话在分别点击a1和a2后,a3就变为可以点的状态了,但是实现不了
       }
}

现在o函数是在oo函数内的,把o函数移出来后能实现功能,但是我不想这样做,想通过修改this["a3"].buttonMode=true这句来实现功能,应该怎么修改?

作者: hihoha   发布时间: 2010-11-24

嵌套函数,真是蛋疼的写法,为什么要用嵌套函数?

问题原因:嵌套函数中this指代的不是主时间轴对象,所以this["a3"]出错,找不到a3对象,直接用a3.buttonMode = true;就对了!

测试代码:

a1.addEventListener(MouseEvent.CLICK,oo);
function oo(e:MouseEvent)
{
       trace("oo clicked!",this);
       a2.addEventListener(MouseEvent.CLICK,o);
       
     function o(event:MouseEvent):void
        {   
           trace("o clicked!",this)
           // this["a3"].buttonMode=true;//如果没错的话在分别点击a1和a2后,a3就变为可以点的状态了,但是实现不了
            a3.buttonMode = true;
      }   
}

作者: yaonai2003   发布时间: 2010-11-24

至于为什么在嵌套函数中的this指代的是global对象,有待楼下的高手来解答!

作者: yaonai2003   发布时间: 2010-11-24