0

我有一个图片库类,可以循环加载缩略图和完整图像。然后我将其推入一个数组并为每个位图创建一个影片剪辑。它运作良好。

在这个过程的一部分,我可以在显示整个画廊之前预加载所有图像?

谢谢!

4

1 回答 1

1

我个人是很棒的BulkLoader库的忠实粉丝:

  • 它非常灵活
  • 它提供了有用的帮助器来访问加载的资产(例如 getBitmap("asset_id") 返回一个类型化的对象)
  • 它提供有关进度的有意义的反馈(可以选择返回值以通过整体“权重”反映进度,而不是来自单个文件的原始值,这些原始值的大小可能会有很大差异)
  • 它处理并发加载(这显然比顺序加载要快)。

或者,如果您想推出自己的解决方案,在循环时,将事件侦听器添加到

事件.完成
通知。在此事件的处理程序中增加一个计数器;一旦此计数器等于您已加载所有资产的元素数。

伪代码:

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
    }
}
于 2009-10-01T12:15:28.587 回答