2009-05-02 84 views
1

如何等待外部.txt文件加載到ActionScript 3中?如果我使用URLLoader,我不能保證該文件已經加載,因爲它在事件完成時分派事件。我從另一個類調用加載函數,所以我不能簡單地將下一個操作粘貼到事件監聽器中。如何等待外部.txt文件在ActionScript 3中加載?

回答

2

要加載文本文件(或XML文件),您可以使用URLLoader。 Here's爲XML的例子(幾乎相同)從kirupa

var loader:URLLoader; 
loader = new URLLoader(); 
loader.addEventListener(Event.COMPLETE, xmlLoaded); 

var request:URLRequest = new URLRequest("file.xml"); 
loader.load(request); 
function xmlLoaded(event:Event):void { 
    var myXML:XML = new XML(loader.data); 
} 

如果從另一個類調用它,你可以通過調用者的事件偵聽參考和被叫處理Event.COMPLETE類:

loader.addEventListener(Event.COMPLETE, caller_class.xmlLoaded); 

理想情況下,你可以讓你的Loader類可重複使用,使其所以不是擴展EventDispatcher收聽的URLLoader的你聽你自己的類。我不張貼代碼爲保持答案簡單,但這裏'山夫婦的鏈接,如果you're感興趣:An example for XML loaderAnother example for a more complex image loader (to avoid confussions don´t read it unless you already understand the text/XML one)

我希望它能幫助:)


編輯: 可以明顯地你要找的dispatchEvent方式這裏'山小貼士:

1)你的類擴展到此事件

public class YourClass extends EventDispatcher{ 

2)使用dispatchEvent(new Event("event_name"));來發送事件

3)從另一個類收聽此事件。 如:loader_class.addEventListener("event_name", callback);

* 4)您也可以選擇一個常數像DispatcherClass.EVENT_NAME由調度類public const EVENT_NAME:String = "event_name",定義的不斷變化的字符串(「EVENT_NAME」),並從其他類調用它是這樣的:loader_class.addEventListener(DispatcherClass.EVENT_NAME, callback);

我希望現在一切都更清楚。

+0

謝謝!我想沒有辦法解決這個問題的功能?如果我執行「loader.addEventListener(Event.COMPLETE,caller_class.xmlLoaded);」,那麼我無法將這兩個類分開,因爲caller_class被編碼到加載器類中。理想情況下,我想從caller_class調用加載函數,等待它完成,然後繼續在caller_class中進行操作。 – Archagon 2009-05-02 10:11:06