加载XML在ActionScript 3
问题描述:
我试图加载XML文件的书籍列表,我环顾四周,发现这个功能,试图调整它为我工作,但我不能得到这个工作,我米能够从它加载XML和实际读取的信息,但我试图建立一个全球性的阵列或类似的东西,所以我可以在以后访问数据,加载XML在ActionScript 3
继承人的代码:
var books:XML = loadBooks();
trace(books); //Returns a blank output
function loadBooks():XML {
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("bookList.xml"));
function LoadXML(e:Event):void {
xmlData = new XML(e.target.data);
trace(xmlData); //Returns what I want to have
}
return xmlData;
}
我加入的跟踪部分评论()来解释一下发生的事情 在此先感谢。
答
第一个跟踪不会显示你想要什么,因为XML是异步加载。这就是为什么您将LoadXML
添加为“完成”事件的事件侦听器的原因。因此,无论您想要使用加载的XML,您都应该在LoadXML
函数中执行此操作。
+0
非常感谢,它现在可以工作,我现在明白问题是什么 – Radicate 2012-04-02 13:25:18
答
在你试图追查书的初始阶段,装载机还没有在XML文件加载完成后 - 所以它不会跟踪任何东西。然而,第二个是因为它与Complete事件绑定在一起,并且只会在加载器完成加载XML时触发。 所以如上,你要与你的XML文件做任何事情应放在loadXML的函数内。
的问题是你的XML负载异步:你的loadXML()函数被调用独立的loadBooks(),所以你可以调用loadBooks()在时间A,但极有可能的loadXML(更多)将会被调用不同的时间B.你应该改变你的代码来迎合这一点。 – 2012-04-02 12:43:25