我最近遇到了一个我似乎无法弄清楚的问题。我有一个图像对象,我试图加载基于数组的长度,所以基于该数字,它将实例化一个新的图像对象,将其放入一个数组,然后最后将该数组添加到显示列表和空间适当的元素。到目前为止我的代码:
var path: String = "img/assets/blue_1.png";
var imgLdr:Loader;
var temp: MovieClip;
public function render(): void {
for (var i: int = 0; i < arr.length; i++) {
switch (str.toLowerCase()) {
case "customer":
switch (arr[i][i][0]) {
case "good":
temp = new MovieClip();
imgLdr = new Loader();
imgLdr.load(new URLRequest(path));
imgLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, added);
break;
case "okay":
//
//
break;
case "bad":
//
//
break;
default:
//
//
break;
}
break;
case "incdec":
switch (arr[i][i][1]) {
case true:
//
break;
default:
//
break;
}
break;
}
}
}
private function added(e: Event): void {
objArr.push(imgLdr);
for (var i: int = 0; i < objArr.length; i++) {
addChild(objArr[i]);
objArr[i].x = 20 * i;
}
}
正如您所看到的,我循环遍历数组的总长度并检查多维数组中包含的各个元素,以查看大小写是好的,好的还是坏的,并添加适当的图像以便最终输出例如,数组可能最终成为[goodImg,badImg,badImg,goodImg]
。例如,此过程适用于影片剪辑,但是当我尝试加载图像时,它似乎没有表现,最终只加载最后一个元素。
答案 0 :(得分:0)
您正在重复使用imgLdr
,每次循环都会为其分配一个新引用。
当加载第一张图片触发added
时,imgLdr
已在循环的最后一次迭代中设置为较新的引用。
您应该将引用加载到加载程序或完整事件的imgLdr
内容,而不是将objArr
推送到target
上:
private function added(e:Event): void
{
objArr.push(e.target.content); // this is adding the just the loaded bitmap
//objArr.push(e.target.loader); // this would add the instance of Loader instead
for (var i: int = 0; i < objArr.length; i++)
{
addChild(objArr[i]);
objArr[i].x = 20 * i;
}
}