2010-03-11 97 views
1

我正在嘗試在AS3中加載多個圖像,並且正在探索有關如何完成這些操作的不同選項。AS3加載程序() - 使用一個加載程序加載多個圖像

我想有隻使用一個負載()實例,並在處理的onComplete處理各種圖像分配...

這是我第一次嘗試:

var buttonLdr:Loader = new Loader(); 
buttonLdr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError); 
buttonLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete); 

whichButton = 0; 
buttonLdr.load(new URLRequest("images/test.png")); 

whichButton = 1; 
buttonLdr.load(new URLRequest("images/testDown.png")); 

whichButton = 2; 
buttonLdr.load(new URLRequest("images/testHover.png")); 

private function onLoadComplete(e:Event):void 
{ 
    switch(whichButton) 
    { 
     case 0: 
      buttonBgUp = e.target.loader.content; 
      break; 
     case 1: 
      buttonBgDown = e.target.loader.content; 
      break; 
     case 2: 
      buttonBgHover = e.target.loader.content; 
      break; 
    } 
    create(); 
} 

一個非常簡單的方法......雖然它只調用最後一次調用的函數,但設置buttonBgHover,但沒有別的。

任何指導可能會發生在這裏將不勝感激。

-thanks

回答

1

只有在上次加載完成時才需要調用下一個加載。

whichButton = 0; 
buttonLdr.load(new URLRequest("images/test.png")); 
private function onLoadComplete(e:Event):void 
{ 
switch(whichButton) 
{ 
    case 0: 
     buttonBgUp = e.target.loader.content; 
     whichButton = 1; 
     buttonLdr.load(new URLRequest("images/testDown.png")); 
     break; 
    case 1: 
     buttonBgDown = e.target.loader.content; 
     whichButton = 2; 
     buttonLdr.load(new URLRequest("images/testHover.png")); 
     break; 
    case 2: 
     buttonBgHover = e.target.loader.content;    
     break; 
} 
create(); 

}

+1

嗯,這將完成這項工作,但那種層疊的邏輯是很不理想的維護代碼的條款,或作爲一個負載管理器,可以成長的基礎並獲得功能。因爲這是一個學習網站,所以我會建議開放「whichButton」以支持將文件URL推入隊列(數組)並使用Array.shift(),直到隊列爲空。這樣,您可以支持在加載過程中添加文件,添加更多循環加載程序等。堅實的設計。 – 2011-04-26 17:22:02