【问题标题】:as3 - Preloading XML Image Galleryas3 - 预加载 XML 图像库
【发布时间】:2009-09-30 20:37:21
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 你能发布你当前的代码吗?这可能有助于我们给出答案。

标签: xml actionscript-3 image-preloader


【解决方案1】:

就我个人而言,我是很棒的 BulkLoader 库的忠实粉丝:

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

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

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
    }
}

【讨论】:

    猜你喜欢
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多