我是as3的菜鸟,我正在努力学习。
这是我无法理解的。我有一个非常简单的XML:
<?xml version="1.0" encoding="utf-8"?>
<SLIDES>
<IMAGE>01.jpg</IMAGE>
<IMAGE>02.jpg</IMAGE>
<IMAGE>03.jpg</IMAGE>
<IMAGE>04.jpg</IMAGE>
<IMAGE>05.jpg</IMAGE>
</SLIDES>
我正在解析这个:
private function loadXML(filename:String):void {
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(filename+".xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void {
myXML = new XML(e.target.data);
myXML.ignoreWhite=true;
for (var i:int = 0; i < myXML.IMAGE.length(); i++) {
imagesURLs.push(myXML.IMAGE[i]);
trace(myXML.IMAGE[i]);
}
}
for each (var imageURL:String in imagesURLs) {
trace(imageURL);
}
}
第一条跟踪返回:
01.jpg
02.jpg
03.jpg
04.jpg
05.jpg
虽然第二个是空的!为什么?我真的开始失去理智。我也尝试过:
myXML.IMAGE[i].toXMLString()
没有运气。能帮助我,让我不知道为什么会这样?
谢谢。
P.S。
使用我需要解析的文件名调用该函数,并且声明数组如下:
public var imagesURLs:Array = [];
我正在使用最新版本的FLEX和flashDevelop
答案 0 :(得分:2)
你的第二个循环在'processXML'函数之前执行。此时你的数组是空的! 只有在数据可用时才会调用'processXML'函数(异步调用) 另外,不要忘记删除您的事件监听器。