我有一個帶有匿名觸摸事件功能的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