2009-10-31 73 views
1

如何加载图像AS3:方法来加载图像AS3

  1. 一次加载所有这些,比如像这样的(伪AS3代码):

    for each (var url:String in images){ 
        loader.load(url); 
    } 
    
  2. 或者加载他们一个接一个(再次,伪代码):

    loader.load(images.shift()) 
    
    onComplete(){ 
        loadNext(images.shift()); 
    } 
    

哪性能更快更好吗?

回答

3

第二种方式似乎好多了。如果在第一种方法中有数百个图像加载,那么所有的图像请求几乎同时被触发,导致浏览器几乎不可用,并且由于并行请求(带宽将被共享),第一个图像的加载可能花费相当长的时间,比第二种方法。但总体加载时间(即图像数量*加载单个图像的平均时间)将以第一种方式减少。

最好的办法是使用这些方法的混合。在任何时候加载MAX_NUMBER这意味着开始加载图像直到MAX_NUMBER的图像加载操作正在进行中。一旦加载操作完成,开始加载一个新的。以下是粗略的方法。需要在固定的时间间隔后调用loadimages可能是100毫秒。而MAX_NUMBER可以是20左右。

function loadimages(){ 
    while(count < MAX_NUMBER) { 
     loader.load(images.shift); 
     count++; 
    } 
} 
onComplete() {count--;} 
onFail(){count--;} 
setIntarval(loadimages, 100); 

,主要取决于它如何您的应用程序在同一时间或在可能的任何给定时间点他们的子集,使用图像,即所有。

3

这个问题没有一个简单的答案。

当Flash加载一个文件(在浏览器中)时,它依赖于浏览器来管理http事务,缓存等。如果你只有几张图片并且它们不是太大,第一种方法更容易程序,你可以依靠浏览器http加载队列来管理这些文件。

如果你有很多文件(数十和数十个),以某种方式错开它可能在很多方面更好。首先,每个对象的创建都非常昂贵,在加载器的情况下,您最终会将事件监听器附加到它上面,甚至可能会显示加载动画。这非常昂贵,并且会减慢Flash的速度,降低应用程序的响应速度。其次,通过让他们蹒跚而行,你明确地控制了什么时候加载什么,而不是依赖于浏览器的http实现。例如,您可以确保首先加载用户首先要访问的项目。

如果文件大得多(可以说数百千字节),则可以一个接一个地加载,这样不会导致用户带宽不足。这允许某种形式的结果比等待四个(通常并发限制)百KB文件并行下载更快。

您选择的策略实际上取决于您正在尝试做什么,我认为最终对于此论坛来说太模糊了。

另一件需要注意的是,第二种方法在下载失败的情况下不是很健壮。