2011-12-12 51 views
0

將對象傳遞給加載器的事件處理器的推薦方式是什麼?Actionscript:如何將對象傳遞給加載器事件

 var l:Loader = new Loader(); 
     var o:Object = new Object(); 
     l.tag = o; // i imagine something like this 
     l.contentLoaderInfo.addEventListener(Event.COMPLETE, splashCompleted); 
     l.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, splashIoerror);   
     l.load(new URLRequest(path)); 


     function splashCompleted(e:Event):void 
     { 
      // here i want to access the object o 
     } 

回答

2

爲什麼你需要做的是什麼?如果有許多加載器,並且想要將某些數據與每個加載器相關聯,則最好編寫子類或包裝類來存儲數據。例如,讓我們考慮的子類:

public class TaggedLoader extends Loader 
{ 
    public var tag:Object; 
} 

使用TaggedLoader代替Loader您可以輕鬆地訪問與加載的對象關聯的數據:

var l:Loader = new TaggedLoader(); 
var o:Object = new Object(); 

l.tag = o; 
l.contentLoaderInfo.addEventListener(Event.COMPLETE, splashCompleted); 
l.load(new URLRequest(path)); 

function splashCompleted(e:Event):void 
{ 
    var taggedLoader:TaggedLoader = (e.currentTarget as LoaderInfo).loader as TaggedLoader; 
    var tag:Object = taggedLoader.tag; 
} 

此外,也可以使用地圖(ObjectDictionary)但地圖在性能方面更差。

+0

謝謝,我只是想,AS已經內置了像C#等其他語言一樣的內置方式。 – clamp

0

您可以使用此事件處理程序中訪問Loader

(e.currentTarget as LoaderInfo).loader 
+0

是的,但我無法設置.tag成員。或者我可以嗎? – clamp

+0

你爲什麼要手動設置? – weltraumpirat