2011-06-16 82 views
1

我試圖加載一堆圖像文件進行處理(使精靈表單精確)。因此,我需要確保這些文件被加載以便進行處理(否則動畫會變得不可思議)。在Flash中按順序加載文件?

我正在使用的代碼是非常標準:

protected function onFileSelect(e : FileListEvent) : void 
    { 
     for each(var file : File in e.files) 
     { 
      var loader : Loader = new Loader(); 
      loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
      loader.load(new URLRequest(file.nativePath)); 
     } 
    } 

我本來以爲由於裝載機在本地運行,他們會開火速度不夠快,但沒有骰子,圖像是不正常的。

任何想法如何解決這個問題,並按文件打開對話框的順序加載它們?

謝謝。

回答

0

我認爲當你使用'for each'時,你不能保證任何特定的順序,而不是循環確保集合中確保順序的每個索引。

此外,絕對不能保證每次加載都會以您開始的相同順序完成。在開始第二個之前,你必須等到第一個完成。

0

根據需要獲取您的裝載機,開始裝載並計算COMPLETE事件。當最後一個到達時,你就完成了。

3

誰會關心他們被加載的順序,只要你把它們全部加載到最後?之後,您可以根據需要重新排列它們。例如,使用數組從打開文件對話框的「保存」的相對順序:

protected function onFileSelect(e : FileListEvent) : void 
    { 
     var loaderArray:Array = new Array(); 
     var i:uint = 0; 
     for each(var file : File in e.files) 
     { 
      loaderArray[i] = new Loader(); 
      loaderArray[i].contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); 
      loaderArray[i].load(new URLRequest(file.nativePath)); 
      i++; 
     } 
    } 

當所有的人都被加載(你可以指望COMPLETE事件,alxx說)你在loaderArray第一圖像[0],loaderArray [1]中的第二個,等等。

1

儘管我會採用danii提出的將Loader對象存儲在有序數組中的方法,但另一種方法是讀取完整的加載器URL函數,然後將加載的圖像放入容器(不管它是什麼),使用該URL對它們進行排序。

這個想法是,你不知道它們加載的順序,但是你可以使用文件名將它們按照正確的順序排序。