2010-01-12 33 views
0

我正在使用Loader将图像数据从ByteArray中取出。问题在于,一旦将图像数据传递给完整的处理程序,我需要使用名称(事先已知)来存储该图像数据。由于操作是异步的,我不能确定哪个多个图像会先完成加载,所以看起来我需要以某种方式传递信息......我似乎无法找到任何通过任何Loader的属性依稀有用的信息。使用加载程序为文件传递信息

有关我如何完成此任务的任何建议?

回答

1

难道你不能只使用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); 
} 

你能提供一些代码吗?

+0

呀,这样做的工作。昨天我遇到了麻烦,所以谢谢你帮忙解决这个问题。现在将其标记为最佳解决方案,因为它需要最少的代码。谢谢。 – grey 2010-01-12 18:05:47

-2

loader.contentLoaderInfo.url将具有加载图像的URL(例如http://sometURL/image1.jpg)。

+0

如果图像数据来自一个字节阵列,则与op状态一样。 – kkyy 2010-01-12 08:49:37

+0

如上所述,在这种情况下它不起作用,并且URL属性是只读的。 – grey 2010-01-12 18:01:05

0
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); 
} 
+0

这也应该工作。 – grey 2010-01-12 18:07:20

0

第一种解决方案是使用字典将Loader实例映射到名称。 像这样:

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); 
    } 
} 
+0

聪明的解决方案,谢谢。 – grey 2010-01-12 18:06:44