2009-09-28 76 views
0

我有這樣的代碼加載拇指和充分的圖像在我的項目:AS3 - 無序XML IMG裝載

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 = [email protected];    

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

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

      var fileFull:String = [email protected]; 

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

     } 

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

當我把我心中已經用於創建數組,圖像進來一個未排序的順序。

我的朋友告訴我,它正在發生類似這樣的事情:「小文件首先出現」。他告訴我,問題在於裝載機,但他無法幫助我。

任何人都可以告訴我什麼是錯的?

謝謝!

回答

0

它看起來像循環了一個給定的XML文檔,其中包含一系列圖像並在循環中異步加載圖像。在這樣做的時候,顯然較小的圖像將首先完成,導致Event.COMPLETE事件觸發。發生這種情況是因爲您要求閃光燈立即和同時開始加載所有圖像。

你可能想要做的是在一個循環中同步加載圖像,首先加載第一個圖像...當圖像Event.COMPLETE執行時,繼續加載下一個圖像等等,直到它們都是完成。這樣做會強制應用程序按照XML中定義的順序加載圖像,並且每次只能像隊列一樣加載圖像。

祝你好運!

+0

拉爾夫,謝謝你的回答..但是..你有一些例證,我該怎麼做? – 2009-09-29 03:42:52

1

解決此問題的最佳方法是使用更多的代碼結構。

首先,創建一個類(我們稱之爲ImageLoader)負責加載拇指和完整圖像。這將是一個包含2個Loader實例的類。爲每個項目創建此類的實例,並在開始之前將它們推入數組中。

一旦數組滿了,迭代指示ImageLoader實例啓動的數組。此方法將依次調用其每個Loader實例的加載方法。

一旦兩臺裝載機都完成,emit a custom ImageLoaderComplete event表明它已完成。

在更高層次上,在與包含ImageLoader實例數組相同的類中,偵聽來自每個ImageLoader實例的自定義事件。對它們進行計數。當您計算的數量與數組中的項數一樣多時,加載完成,並且您的陣列與啓動時保持相同的順序,並且方便地對拇指和完整圖像進行分組。

+0

Spender,thanx的解釋。這真的對我有意義,但我無法執行此操作。我正在學習動作腳本,現在對我來說太複雜了。 – 2009-09-29 19:24:45