2010-01-12 7 views
0

로더를 사용하여 ByteArray에서 이미지 데이터를 가져옵니다. 문제는 완성 된 핸들러에 전달 된 이미지 데이터를 미리 알고있는 이름으로 저장해야한다는 것입니다. 작업이 비동기 적이기 때문에 여러 이미지 중에서 어떤 이미지가 먼저로드 될 것인지를 확신 할 수 없기 때문에 어떻게 든 정보를 전달해야하는 것처럼 보입니다. 어떤 경우 든 로더의 모든 속성을 찾을 수없는 것 같습니다. 막연하게 유용한 정보.로더가있는 파일에 대한 정보 전달

내가이 작업을 수행하는 방법에 대한 권장 사항은 무엇입니까?

답변

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

-2

loader.contentLoaderInfo.url에는로드 된 이미지의 URL이 있습니다 (예 : http://sometURL/image1.jpg).

+0

이미지 데이터가 bytearray에서 온 것이 아니라 op 상태입니다. – kkyy

+0

인용 된 바와 같이이 경우에는 작동하지 않으며 URL 속성은 읽기 전용입니다. – grey

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

0

첫 번째 해결 방법은 사전을 사용하여 로더 인스턴스를 이름에 매핑하는 것입니다. 이처럼 :

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