2015-04-03 57 views
0

我有一個函數,動作腳本3:調用字符串變量函數

function tempFeedBack():void 
    { 
     trace("called"); 
    } 

和事件偵聽器完美的作品時,我直接寫函數名這樣的,

thumbClip.addEventListener(MouseEvent.CLICK, tempFeedBack); 

但是,當我給功能名稱像這樣的字符串,

thumbClip.addEventListener(MouseEvent.CLICK, this["tempFeedBack"]()); 

它不工作!它說,TypeError: Error #1006: value is not a function.

任何想法?

回答

0

因爲根本this["tempFeedBack"]()不是Function對象,這是addEventListener()功能的listener參數你明白我的錯誤,此外,這沒有什麼,因爲你的tempFeedBack()函數無法返回任何值。

爲了更明白,你已經寫了等同於:

thumbClip.addEventListener(MouseEvent.CLICK, tempFeedBack()); 

在這裏,您可以看到您已通過您的tempFeedBack()功能的listener參數的返回值,這應該是一個Function對象,但您的tempFeedBack()不能返回任何內容!

所以,只是爲了更多地解釋,如果你想要的是什麼,你已經寫了工作,你應該做這樣的事情:

function tempFeedBack():Function 
{ 
    return function():void { 
      trace("called"); 
     } 
} 

但是,我認爲你的意思是:

// dont forget to set a MouseEvent param here 
function tempFeedBack(e:MouseEvent):void 
{ 
    trace("called"); 
} 
stage.addEventListener(MouseEvent.CLICK, this["tempFeedBack"]); 
// you can also write it 
stage.addEventListener(MouseEvent.CLICK, this.tempFeedBack); 

希望能有所幫助。

+0

啊,太棒了!有效! – nikhilk 2015-04-03 15:19:50