2011-06-30 1 views
1

Flexでは、コールバックイベントに余分なパラメータを渡して早期に評価できますか?たとえば

for(var i:int=0; i<someArray.length; i++) 
{ 
    var loader:Loader=new Loader(); 
    loader.load(new URLRequest("http://testurl.com/test.jpg")); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{imageLoaded(e,i)}); 
} 

二PARAMTER(I)imageLoadedについては、私はもう存在しないと1をデフォルトされることは、ときに評価されるように、第2 PARAMTERを取得することが可能ですので、私は推測していない、常に1です負荷は完全ではなく開始されますか?

答えて

2

iは既に存在していますが、コピーは1つのみです。最初の繰り返しからのコールバックが実行されるまでに、スタックフレームのiの値が変更されています。この問題を回避する1つの方法は、別々のスタックフレームに関数を生成することです。

private function makeCallback(i:int):Function { 
    return function(e:Event):void {imageLoaded(e,i);}; 
} 

public function frob():void { 
    for(var i:int=0; i<someArray.length; i++) 
    { 
     var loader:Loader=new Loader(); 
     loader.load(new URLRequest("http://testurl.com/test.jpg")); 
     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, makeCallback(i)); 
    } 
}