2010-08-04 80 views
1

在AS3中,我加入事件偵聽器,然後附接匿名函數它:inf actionscript 3(as3),如何在匿名函數中傳遞參數?

myBox.addEventListener(MouseEvent.ROLL_OVER, 功能(E:MouseEvent)方法:無效 { Alert.show(計數,' Alert Box'); );

現在這整段代碼循環n次。現在,我有n個myBox,每當我把鼠標放在盒子上時,它都應該提醒這個名字。但是,我所看到的是每個盒子使用count的最後一個值。

如何將參數或值傳遞給匿名函數? (如翻滾,我認爲,預計只有一個變量)

回答

5

您需要通過執行函數來創建一個新的範圍:

for (var i:int = 0; i<10; i++) 
{ 
    (function(count:int):void 
    { 
     myBox.addEventListener(MouseEvent.ROLL_OVER, 
      function(e:MouseEvent):void { Alert.show(count, 'Alert Box'); }); 
    })(i); 
} 
1

而不是依靠一個指標,是不是很簡單(更好)獲取事件的currentTarget並獲取其成員的值?

myBox.addEventListener(MouseEvent.ROLL_OVER, 
function(e:MouseEvent):void 
{ 
    Alert.show(UIComponent(e.currentTarget).name, 'Alert Box'); 
); 

如果你絕對必須引用索引,你可以得到由

UIComponent(e.currentTarget).parent.getChildIndex(e.currentTarget) 

而且,現在我想起來了,你甚至不用做這在一個匿名函數所有如果你使用事件模型。

+0

是的,這就是對的! :) – svirk 2010-08-04 15:12:13

相關問題