我有一个带有匿名触摸事件功能的MovieClip,当我执行this.gotoAndStop(2)
时,出现一个错误,说gotoAndStop() is not a function
。但是,在一个非匿名函数中,我不会得到这个错误。gotoAndStop()在匿名函数中?
任何原因为什么?
我有一个带有匿名触摸事件功能的MovieClip,当我执行this.gotoAndStop(2)
时,出现一个错误,说gotoAndStop() is not a function
。但是,在一个非匿名函数中,我不会得到这个错误。gotoAndStop()在匿名函数中?
任何原因为什么?
最有可能的this
是不是你所期望的。
围绕this
的一种方法是:将“this”捕获到局部变量中并在函数中使用它。
....
var me = this;
whatever.addEventListener("foo", function(v:TypeOfEvent)
{
// note that this != me here
me.gotoAndStop();
}
如果您对成员函数做同样的动作脚本会自动捕获“本”,它会被“绑定”正常为ActionScript:Functions和Bound methods文章descripted:
方法的行为类似,它们还保留有关它们所创建的词汇环境的信息。当一个方法从它的实例中提取出来时,这个特性是最引人注目的,它创建了一个绑定方法。函数闭包和绑定方法之间的主要区别在于,绑定方法中this关键字的值总是指它最初附加的实例,而在函数闭包中,this关键字的值可以更改。成员函数
memeberFunction
内的this
所以下面的代码将有预期值:
whatever.addEventListener("foo", memberFunction);
注:ActionScript中必须的JavaScript非常相似的规则,规定this
在匿名函数,所以你会发现How does the "this" keyword work?问题非常有用。
没有什么似乎。 – Cilan