我正在加载一系列电影剪辑并使用flash as3将它们添加到舞台上,但问题是影片剪辑在完成加载后会立即添加到舞台中,而不是按顺序添加到舞台中。数组,因此屏幕上的顺序显得混乱。如何确保它们以与URL中引用相同的顺序添加到舞台中?这是我的代码:
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++;
}
答案 0 :(得分: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);
}
}
答案 1 :(得分:1)
我只是输入相同的解决方案...... 要以某种特定顺序加载,您必须使其递归。 您可以尝试使用greensock中的loadermax库。坚如磐石,快速轻巧。 除了非常容易使用,你可以设置平行加载踏板的数量。 你可以找到它here
答案 2 :(得分: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();
}