2011-01-20 63 views
0

我是一个与as3 noob,我试图学习。将as3 XML值转换为数组。不能让它工作

这是我无法理解的东西。我有一个非常简单的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中

回答

2

你的第二个循环执行'processXML'函数之前。在这个时候你的数组是空的! 只有当数据可用时才会调用您的'processXML'函数(异步调用) 另外,不要忘记删除您的事件侦听器。