传递信息的文件与装载机
-
20-09-2019 - |
题
我使用装载机以获取图像数据输出的ByteArray的。问题是,我需要存储一个名称的图像数据一旦它传递到完整的处理程序(这是事先知道的)。由于该操作是异步的,我不能肯定这多的图像将首先完成加载,这样看来,我需要用它某种方式传递的信息......我似乎无法找到传递任何装载机的任何属性沿着依稀有用的信息。
这是我怎么可能做到这一点的任何建议?
解决方案
你不能只是使用Loader.name
财产?
var ldr:Loader = new Loader();
ldr.name = 'name_of_the_loader';
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderListener);
ldr.loadBytes(aByteArray);
...
function loaderListener(event:Event):void {
trace('name of the completed loader is '+LoaderInfo(event.target).loader.name);
}
你能否提供一些代码?
其他提示
private var loaders:Array = [];
private var names:Array = [];
//inside loadImages method
for(i = 0; i < len; i++)
{
var ldr:Loader = new Loader();
//add listeners and call load
loaders.push(ldr)
names.push(name-of-ith-image);
}
private function onLoadComplete(e:Event):void
{
var index:Number = loaders.indexOf(LoaderInfo(e.target).loader);
var requiredName:String = names[index];
trace(requiredName);
}
首先解决方案将是使用一个词典对加载实例映射到名称。 像这样:
private var names : Dictionary = new Dictionary();
...
var ldr : Loader = new Loader();
names [ ldr ] = 'someName';
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderListener);
ldr.loadBytes(aByteArray);
...
function loaderListener(event:Event):void {
trace('name of the completed loader is '+ names[ event.target ] );
}
在其它的解决方案将是使用一个仿函数,如下所示:
var ldr : Loader = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, createListener( 'someName' ) );
ldr.loadBytes(aByteArray);
...
function createListener( imgName : String ) : Function {
return function ( event : Event ) : void {
trace('name of the completed loader is '+ imgName );
}
}
loader.contentLoaderInfo.url
将具有所加载的图像的URL(例如 HTTP://sometURL/image1.jpg )
不隶属于 StackOverflow