2009-09-30 102 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 
    } 
}