2010-06-08 78 views
1

我遇到了我的actionscript/flex前端的情況。訪問本地變量的匿名函數[ActionScript - Flex 3.5]

for each (var sym:String in ["A","B","C"]) { 

       const handler = function (data:Object):void { Alert.show(sym); }     

       asyncCallback(handler); 

    } 

我期待有3個警報窗口包含A,B和C.但實際結果是3個警報窗口都顯示C!

回答

1

這一個是有點棘手。你必須將你的處理程序創建包裝在另一個函數中。

嘗試:

for each(var sym:String in ["A","B","C"]) { 
    function createHandler(val:String):Function { 
     var handler = function(data:Object):void { 
      trace(val); 
     } 
     return handler; 
    } 
    var handler:Function = createHandler(sym); 
    asyncCallback(handler); 
}