gotoAndStop()在匿名函数中?

时间:2013-12-16 01:21:54

标签: actionscript-3 flash air

我有一个带有匿名触摸事件功能的MovieClip,当我执行this.gotoAndStop(2)时,我收到一条错误消息gotoAndStop() is not a function。但是,在非匿名函数中,我没有收到此错误。

有什么理由?

1 个答案:

答案 0 :(得分:1)

很可能this不是您所期望的。

围绕this的一种方法是:将“this”捕获到局部变量中并在函数中使用它。

....
var me = this;
whatever.addEventListener("foo", function(v:TypeOfEvent)
{ 
   // note that this != me here 
   me.gotoAndStop();
}

如果对成员函数执行相同的操作,ActionScript将自动捕获“this”,并且它将按照ActionScript:FunctionsBound methods文章中的说明正确“绑定”:

  

方法表现相似,因为它们还保留有关创建它们的词汇环境的信息。当从其实例中提取方法时,此特征最明显,这会创建绑定方法。函数闭包和绑定方法之间的主要区别在于,绑定方法中this关键字的值始终引用它最初附加到的实例,而在函数闭包中,this关键字的值可以更改。 / p>

因此,下面的代码将在成员函数this中具有memeberFunction的预期值:

whatever.addEventListener("foo", memberFunction);

注意:在匿名函数中,ActionScript与JavaScript的this规则非常相似,因此您可能会发现How does the "this" keyword work?问题有用。

相关问题