2009-05-02 88 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