AS3 Event.COMPLETE 传递参数
AS3 Event.COMPLETE passing argument
我试图在 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","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, 0, 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
如您所知,Loader class 继承自 DisplayObject,这反过来意味着您可以访问 .name 属性.
考虑到这一点,您可以 'abuse' 此 属性 将 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, 0, true);
这应该给你这样的输出:
the ii: 0
the ii: 1
the ii: 2
the ii: 3
message : 1
message : 0
message : 3
message : 2
我试图在 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","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, 0, 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
如您所知,Loader class 继承自 DisplayObject,这反过来意味着您可以访问 .name 属性.
考虑到这一点,您可以 'abuse' 此 属性 将 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, 0, true);
这应该给你这样的输出:
the ii: 0
the ii: 1
the ii: 2
the ii: 3
message : 1
message : 0
message : 3
message : 2