簡體   English   中英

AS3-無序XML IMG加載

[英]AS3 - Unordered XML IMG loading

我有這段代碼可以在我的項目中加載縮略圖和完整圖像:

private function processXMLHandle(e:Event):void
    {
        var xml:XML = new XML(e.target.data);

        for each (var line:XML in xml.IMAGE)
        {
            var file:String = line.@THUMB;              

            var loader:Loader = new Loader();
            loader.load(new URLRequest(file));

            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

            var fileFull:String = line.@FULL;

            var loaderFull:Loader = new Loader();
            loaderFull.load(new URLRequest(fileFull));
            loaderFull.contentLoaderInfo.addEventListener (Event.COMPLETE, completeFullHandler);

        }

        myXMLLoader.removeEventListener(Event.COMPLETE, processXMLHandle);
    }

當我推送為此創建的數組時,圖像以未排序的順序出現。

我的一個朋友告訴我,正在發生類似的事情:“小文件首先出現”。 他告訴我問題出在裝載機,但他幫不了我。

誰能告訴我怎么了?

謝謝!

最好的方法是在代碼中增加一些結構。

首先,創建一個類(負責將其稱為ImageLoader)來加載縮略圖和完整圖像。 這將是一個具有2個Loader實例的類。 為每個項目創建此類的實例,然后在開始之前將它們推入數組。

陣列裝滿后,請對陣列進行迭代,以指示ImageLoader實例啟動。 該方法將依次調用其每個Loader實例的load方法。

兩個加載器都完成后, 發出一個自定義ImageLoaderComplete事件,指示該事件已完成。

在更高級別上,在與包含ImageLoader實例數組的類相同的類中,偵聽從每個ImageLoader實例發出的自定義事件。 算上它們。計數完陣列中的所有項目后,加載完成,陣列保持與開始時相同的順序,並方便地將拇指和完整圖像分組。

看起來您正在遍歷包含圖像列表的給定XML文檔,並以循環方式異步加載圖像。 這樣做顯然會導致較小的圖像首先完成,從而引發Event.COMPLETE事件。 發生這種情況是因為您要求Flash立即開始並發加載所有圖像。

您可能想要做的是改為通過首先加載第一個圖像來循環加載圖像...在執行Event.COMPLETE圖像時,繼續加載下一個圖像,依此類推,直到全部完成。 這樣做將迫使您的應用程序按照XML中定義的順序加載圖像,並且每次都像隊列一樣加載圖像。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM