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

as3一次加载多张图片,并将图片存储在数组里,然后依次加载在舞台,为什么只有显示一张图片呢?privatefunctionloadxml(){myLoader=newUR... as3一次加载多张图片,并将图片存储在数组里,然后依次加载在舞台,为什么只有显示一张图片呢?
private function loadxml() {
myLoader=new URLLoader;
myLoader.load(new URLRequest("xml/Imgmassages.xml"));
myLoader.addEventListener(Event.COMPLETE,xmlLoader);
}
private function xmlLoader(e:Event):void {
imgmassageXml=XML(e.target.data);
var i:uint=0;
var imgUrl:String;
var url:URLRequest;
for (i; i<imgmassageXml.content; i++) {
imgUrl=imgmassageXml.Imgmassage[i].ImgURL;
url=new URLRequest(imgUrl);
loader=new Loader();
loader.load(url);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,comHandler);
}
}
function comHandler(e:Event):void {
imgsArray.push(loader);
if (imgsArray.length==imgmassageXml.content) {
creatImgBtnMc();
}
}
private function creatImgBtnMc() {
mc1.addChild(imgsArray[1]);
mc2.addChild(imgsArray[2]);
}
mc1里没有图片,mc2里有图片,但是注释掉mc2这一行,mc1里就有图片了为什么?
求高手解答
展开
 我来答
Keensb
2013-05-13 · TA获得超过787个赞
知道小有建树答主
回答量:952
采纳率:0%
帮助的人:739万
展开全部
程序流和对象的索引问题啊!

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

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

分析一下你的程序流:

for (i; i<imgmassageXml.content; 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])。
lsjaker4
2013-05-13 · TA获得超过289个赞
知道小有建树答主
回答量:557
采纳率:0%
帮助的人:603万
展开全部
楼主一点也不厚道,要想让别人帮你解决问题,就要有诚意,不要只截取部分代码,这没办法测试,所以你应该做的就是把你的东西打个包传上来,不然,哪个人愿意再去写一个XML,再去创建一组图片。我想任何一个程序员都不敢在没有测试的情况下,给你正确答案?所以只能根据你的提示猜测。我的猜测是如下,希望对你有帮助。

if (imgsArray.length==imgmassageXml.content) {
creatImgBtnMc();
}
这个条件是数组长度等于载入的XML根的长度,然后执行creatImgBtnMc(); 应该是你没有对它进循环读取数组索引,然后,直接使用索引,所以才出现你的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TLast_Ghost
2013-05-13 · TA获得超过1542个赞
知道小有建树答主
回答量:649
采纳率:20%
帮助的人:514万
展开全部
可能图层重叠了。。。。mc1和mc2在什么位置实例的你也没贴出来啊,可能是他俩的问题。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式