2011-02-23 133 views
0

我加载了一个电影剪辑数组,并将它们添加到舞台上,使用flash as3,但问题是电影剪辑一旦完成就会添加到舞台上加载,而不是按照阵列中的位置顺序排列,因此屏幕上的顺序显得混乱。我如何确保它们按照URL中存在引用的顺序添加到舞台上?这里是我的代码:flash as3 movieClip加载程序无法按数字顺序加载

var currentLoaded:int = 0; 

function loadThumbs(){ 
    for (var i in project_array){ 
     var thumbLoader:Loader = new Loader(); 
     thumbLoader.load(new URLRequest(project_array[i].project_thumb)); 
     thumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded); 
    } 
} 

function thumbLoaded(e:Event):void { 
    project_array[currentLoaded].projectThumb.thumbHolder.addChild(e.target.content); 
    admin.slideHolder.addChild(project_array[currentLoaded].projectThumb); 
    currentLoaded++; 
} 

回答

1

嗯,我只是键入相同的解决方案... 在一些特定的顺序加载,你必须让它递归。 您可以尝试使用greensock的loadermax库。坚如磐石,快速轻便。除了这个非常容易使用,你可以设置平行加载胎面的数量。 你可以找到它here

1

资产可能会加载比别人快,所以这样的事情可能会帮助...

function thumbLoaded(e:Event):void { 
     project_array[currentLoaded].projectThumb.thumbHolder.addChild(e.target.content); 
     currentLoaded++; 
     if(currentLoaded>=project_array.length){ 
     addAssetsToStage(); 
     } 
    } 

    function addAssetsToStage():void{ 
     for(var i:int=0;i<project_array.length;i++) 
     { 
     admin.slideHolder.addChild(project_array[i].projectThumb); 
     } 
    } 
+0

这也不会工作,currentLoaded只是一个计数器。将e.target.content添加为project_array [currentLoaded]的子项将只按照它们加载的顺序进行分配。它需要的是project_array [i],但是我们已经失去了我的范围。我正在考虑将thumbLoader添加到loadThumbs函数中的适当数组对象,但是我不确定如何引用其内容。像这样:project_array [i] .addChild(thumbLoader);在loadThumbs和admin.slideHolder.addChild(project_array [i] .thumbLoader.content);在addThumbs – mheavers 2011-02-23 18:01:35

+0

从头开始 - 无法添加一个加载器作为孩子,它看起来像 – mheavers 2011-02-23 18:13:49

+0

@mheavens - 这加载所有剪辑,然后按顺序添加它们。最好的解决方案。 – alxx 2011-02-23 19:08:52

0

好吧,我想这个工作 - 但如果有人计算出一个办法在启动另一个负载之前,无需等待每个以前的图像加载,请执行此操作,请让我知道!

var currentLoaded:int = 0; 

function loadThumbs(){ 
    if (currentLoaded < project_array.length){ 
     var thumbLoader:Loader = new Loader(); 
     thumbLoader.load(new URLRequest(project_array[currentLoaded].project_thumb)); 
     thumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded); 
    } 
} 

function thumbLoaded(e:Event):void { 
    project_array[currentLoaded].projectThumb.thumbHolder.addChild(e.target.content); 
    admin.slideHolder.addChild(project_array[currentLoaded].projectThumb); 
    currentLoaded++; 
    loadThumbs(); 
}