AS3 Event.COMPLETE传递参数

我试图在Event.Complete上传递参数,因此一旦它们加载图像,我就可以相应地处理它们的位置,存储它们,等等。请参见下面的代码和输出:

var pic:Array = ["https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png","https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png","https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"];

for (var ii: uint = 0; ii < pic.length; ii++) {

var imageURLRequest:URLRequest = new URLRequest(pic[ii]); 
var myImageLoader:Loader = new Loader(); 
myImageLoader.load(imageURLRequest); 
trace ("the ii: " + ii);

myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,function(evt:Event)
{
   doIt(evt,ii)
},false,true);

function doIt(evt:Event,msg:int) {
    //var myBitmapData:BitmapData = new BitmapData(myImageLoader.width,myImageLoader.height); 
    //myBitmapData.draw(myImageLoader); 
    //var myBitmap:Bitmap = new Bitmap; 
    //myBitmap.bitmapData = myBitmapData; 
    trace ("message : " + msg);
}
}

/////Output
the ii: 0
the ii: 1
the ii: 2
the ii: 3

message : 4
message : 4
message : 4
message : 4

///Expected Output

/////Output
the ii: 0
the ii: 1
the ii: 2
the ii: 3

message : 0 
message : 1
message : 2
message : 3

感谢您的帮助 Speego

wangruiyue 回答:AS3 Event.COMPLETE传递参数

您可能知道, Loader 类继承自 DisplayObject ,这意味着您可以访问 .name 属性。>

请记住,您可以“滥用”此属性以将 ii 变量的值存储为字符串,并将其作为第二个参数发送到doIt()函数-在将其回退后到整数。

因此只需更改以下内容:

var myImageLoader:Loader = new Loader(); 

对此:

var myImageLoader:Loader = new Loader(); 
myImageLoader.name = ii.toString();

和onComplete回调处理程序对此:

myImageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,function(evt:Event):void
{
doIt(evt,int(flash.display.LoaderInfo(evt.target).loader.name));
},false,true);

这应该给你这样的输出:

the ii: 0
the ii: 1
the ii: 2
the ii: 3
message : 1
message : 0
message : 3
message : 2
本文链接:https://www.f2er.com/3045064.html

大家都在问