as3一次加载多张图片,并将图片存储在数组里,然后依次加载在舞台,为什么只有显示一张图片呢?

2025-05-13 07:12:45
推荐回答(3个)
回答1:

程序流和对象的索引问题啊!

loader.contentLoaderInfo.addEventListener(Event.COMPLETE,comHandler);

楼主知道comHandler什么时候执行吗?当loader.contentLoaderInfo获得加载对象信息的时候,这代码的实际执行会被延迟。

分析一下你的程序流:

for (i; i……
……
loader=new Loader();//步骤一:创建新的Loader对象,并把loader的索引指向新的实例
loader.load(url);//步骤二:让新的loader读取信息url
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,comHandler);//步骤三:读取对象信息成功时执行comHandler函数,---------但是还没成功的时候程序流就返回步骤一了。一直执行了 imgmassageXml.content 次,你的comHandler都还没执行呢。
}

然后到了你comHandler真正执行的时候,
imgsArray.push(loader); 一共push了 imgmassageXml.content 个loader,这些loader是同一个对象。
不信你试试 trace(imgsArray[0] == imgsArray[1],imgsArray[0] == imgsArray[2])。

回答2:

楼主一点也不厚道,要想让别人帮你解决问题,就要有诚意,不要只截取部分代码,这没办法测试,所以你应该做的就是把你的东西打个包传上来,不然,哪个人愿意再去写一个XML,再去创建一组图片。我想任何一个程序员都不敢在没有测试的情况下,给你正确答案?所以只能根据你的提示猜测。我的猜测是如下,希望对你有帮助。

if (imgsArray.length==imgmassageXml.content) {
creatImgBtnMc();
}
这个条件是数组长度等于载入的XML根的长度,然后执行creatImgBtnMc(); 应该是你没有对它进循环读取数组索引,然后,直接使用索引,所以才出现你的问题。

回答3:

可能图层重叠了。。。。mc1和mc2在什么位置实例的你也没贴出来啊,可能是他俩的问题。。。