Предаване на информация за файлове с Loader

Използвам Loader, за да получа данните за изображението от ByteArray. Проблемът е, че трябва да съхраня тези данни за изображение с име (което е известно предварително), след като бъдат предадени на пълния манипулатор. Тъй като операцията е асинхронна, не мога да бъда сигурен кое изображение на множество ще завърши зареждането първо, така че изглежда трябва да предам информацията с него по някакъв начин... Изглежда не мога да намеря никакви свойства на Loader, които да предават смътно полезна информация.

Някакви препоръки за това как мога да постигна това?


person grey    schedule 12.01.2010    source източник


Отговори (3)


Не може ли просто да използвате свойството 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);
}

Бихте ли предоставили някакъв код?

person kkyy    schedule 12.01.2010
comment
Да, това работи. Вчера имах проблеми с това, така че благодаря, че изяснихте това. Отбелязвайки това като най-доброто решение за момента, тъй като изисква най-малко код. Благодаря. - person grey; 12.01.2010

Първото решение би било да се използва речник за картографиране на екземплярите на 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 );
    }
}
person Creynders    schedule 12.01.2010

loader.contentLoaderInfo.url ще има URL адрес на зареденото изображение (напр. http://sometURL/image1.jpg).

person bhups    schedule 12.01.2010
comment
Не и ако данните за изображението идват от байтов масив, както е посочено в операцията. - person kkyy; 12.01.2010
comment
Както беше цитирано, това не работи в този случай и свойството URL е само за четене. - person grey; 12.01.2010