2009-09-30 98 views
0

我有一個圖像庫類,可以在循環中逐個加載縮略圖和完整圖像。然後我推入一個數組,並創建一個影片剪輯與每個位圖。它運作良好。as3 - 預加載XML圖像庫

在這個過程的女巫部分,我可以預先加載所有圖像,然後再顯示整個畫廊?

Thanx!

+0

您可以發佈您當前的代碼?這可能有助於我們給出答案。 – jessegavin 2009-09-30 20:42:47

回答

1

個人我是真棒BulkLoader庫的超級粉絲:

  • 這是令人難以置信的靈活性
  • 它提供了有用的工具來訪問加載的資產(如getBitmap(「ASSET_ID」)返回一個類型的對象)
  • 它給出了有意義的進度反饋(值可以選擇性地返回以反映整體「權重」的進度,而不是來自單個文件的原始值,其大小可能差別很大)
  • 它處理併發加載ch顯然比按順序加載要快)。

或者,如果您想滾動自己的解決方案,當您循環時,向

Event.COMPLETE
通知添加事件偵聽器。在這個事件的處理程序中增加一個計數器;一旦這個計數器等於你已經加載所有資產的元素數量。

僞代碼:

var loadCounter:int = 0; 

var img_arr:Array = [ 
    "img1_thumb.jpg", "img1.jpg", 
    "img2_thumb.jpg", "img2.jpg", 
    ... 
]; 
var image_num:int = img_arr.length; 

var ldr:Loader; 
var req:URLRequest; 
var path:String; 
var i:int = 0; 
for(; i < image_num; i++) 
{ 
    path = "http://myserver.com/images/" + img_arr[i]; 
    req = new URLRequest(path); 
    ldr = new Loader(); 
    ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, _onLoadComplete); 
    ldr.load(req); 
} 

private function _onLoadComplete(event:Event):void 
{ 
    if(++loadCounter == image_num) 
    { 
     // do whatever you need to your loaded assets 
    } 
}