如何在ActionScript 3中等待外部.txt文件加载?如果我使用URLLoader,我无法保证文件已加载,因为它在完成时调度了一个事件。我正在从另一个类调用loader函数,所以我不能简单地将下一个动作粘贴到事件监听器中。
答案 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 loader和Another 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}}
我希望现在一切都清楚了。