0

Loader を使用して、ByteArray から画像データを取得しています。問題は、画像データが完全なハンドラーに渡されたら、その画像データを名前 (事前にわかっている) で保存する必要があることです。操作が非同期なので、multiple のどのイメージが最初にロードを完了するかがわからないので、何らかの方法で情報を渡す必要があるようです...漠然と役立つ情報が一緒に。

これを達成する方法に関する推奨事項はありますか?

4

4 に答える 4

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

コードを教えていただけますか?

于 2010-01-12T07:33:37.283 に答える
0

最初の解決策は、Dictionary を使用して 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 );
    }
}
于 2010-01-12T13:07:44.843 に答える
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);
}
于 2010-01-12T07:44:48.917 に答える
-2

loader.contentLoaderInfo.urlロードされた画像のURLが含まれます(例:http://sometURL/image1.jpg)。

于 2010-01-12T07:38:05.577 に答える