0

私は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

2番目が空の間!なんで?私は本当に心を失い始めています。私も試しました:

myXML.IMAGE[i].toXMLString()

運がない。私を助けて、なぜこれが起こるのか私を理解させてくれませんか?

ありがとうございました。

ps

関数は解析する必要のあるファイル名で呼び出され、配列は次のように宣言されます。

public var imagesURLs:Array = [];

flashDevelopで最新バージョンのFLEXを使用しています

4

1 に答える 1

2

2 番目のループは、「processXML」関数の前に実行されます。この時点で、配列は空です! 「processXML」関数は、データが利用可能になる場合にのみ呼び出されます (非同期呼び出し)。また、イベント リスナーを削除することを忘れないでください。

于 2011-01-20T16:48:25.727 に答える