[英]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.