2012-04-02 5 views
1

XMLファイルをブックリストで読み込もうとしていますが、この関数が見つかってこの関数が見つかったので、それを調整してみましたが、 XMLをロードして、実際にそこから情報を読み取ることができM、私は私が後でデータにアクセスできるようなグローバル配列か何かを設定しようとしていた、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; 
} 

トレース()の部分にコメントを追加して、何が起こっているか少し説明してください ありがとうございます。

+1

問題はxmlが非同期に読み込まれることです。LoadXML()関数はloadBooks()とは独立して呼び出されるため、時刻AでloadBooks()を呼び出すことができますが、loadXMLそのためにコードを変更する必要があります。 –

答えて

1

最初のトレースは、XMLが非同期にロードされるため、必要なものを表示しません。このため、「完了」イベントのイベントリスナーとしてLoadXMLを追加するのはこのためです。だから、ロードされたXMLで何をしたいのかは、LoadXML関数で行うべきです。

+0

ありがとう、それは今働き、私は今問題が何だったのか理解しています – Radicate

0

初期段階では本を追跡しようとしているにもかかわらず、ローダーはXMLファイルに読み込まれていないので、何もトレースされません。しかし、それはCompleteイベントに拘束され、ローダーがXMLのロードを完了したときにのみ起動されるため、2番目のイベントが発生します。 上記のように、XMLファイルでやりたいことは、LoadXML関数内に配置する必要があります。

関連する問題