如何在ActionScript 3中等待外部.text文件加载?

时间:2009-05-02 06:57:08

标签: flash actionscript-3 actionscript

如何在ActionScript 3中等待外部.txt文件加载?如果我使用URLLoader,我无法保证文件已加载,因为它在完成时调度了一个事件。我正在从另一个类调用loader函数,所以我不能简单地将下一个动作粘贴到事件监听器中。

1 个答案:

答案 0 :(得分:2)

要加载文本文件(或XML文件),您可以使用URLLoader。这是来自kirupa

的XML(几乎相同)的示例
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);
}

如果从另一个类调用它,则可以将调用者作为EventListener的引用传递,并从被调用的类处理Event.COMPLETE:

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

理想情况下,您可以使您的加载器类可重用,并使其扩展EventDispatcher,而不是监听URLLoader,您可以听自己的类。我不是为了保持答案简单而发布代码,但如果您感兴趣,可以使用以下几个链接: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)将您的课程扩展到EventDispatcher

public class YourClass extends EventDispatcher{

2)使用dispatchEvent(new Event("event_name"));派遣事件

3)从另一个班级听这个事件。 例如:loader_class.addEventListener("event_name", callback);

* 4)您可以选择通过在调度程序类DispatcherClass.EVENT_NAME中定义常量来将字符串(“event_name”)更改为public const EVENT_NAME:String = "event_name",之类的常量,并从另一个类中调用它,如下所示:{ {1}}

我希望现在一切都清楚了。