簡體   English   中英

INF ActionScript 3(AS3),如何在匿名函數中傳遞參數?

[英]inf actionscript 3 (as3), how to pass parameter in anonymous function?

在as3中,我要添加事件監聽器,然后將匿名函數附加到它:

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

現在,整個代碼循環了n次。 現在,我有n個myBoxes,每當我將鼠標懸停在該框上時,它都將提示該名稱。 但是,我看到的是,每個框都使用count的最后一個值。

如何將參數或值傳遞給匿名函數? (我相信,滾動時只需要一個變量)

您需要通過執行一個函數來創建一個新的作用域:

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);
}

而不是依賴索引,獲取事件的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)

而且,現在我想到了,如果您使用事件模型,甚至根本不需要使它成為匿名函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM