图像对象未根据数组长度正确加载

时间:2014-09-18 16:35:08

标签: arrays actionscript-3

我最近遇到了一个我似乎无法弄清楚的问题。我有一个图像对象,我试图加载基于数组的长度,所以基于该数字,它将实例化一个新的图像对象,将其放入一个数组,然后最后将该数组添加到显示列表和空间适当的元素。到目前为止我的代码:

    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]。例如,此过程适用于影片剪辑,但是当我尝试加载图像时,它似乎没有表现,最终只加载最后一个元素。

1 个答案:

答案 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;
    }
}