2011-01-20 16 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'函數(異步調用) 另外,不要忘記刪除您的事件偵聽器。