2014-09-18 110 views
0

我最近遇到了一个我似乎无法弄清楚的问题。我有一个图像对象,我试图加载这是基于数组的长度,所以基于这个数字,它会实例化一个新的图像对象,将它放入一个数组,然后最后将该数组添加到显示列表和空间适当的元素。我的代码迄今:根据阵列长度不能正确加载图像对象

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

您正在重新使用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; 
    } 
} 
+0

,完美的工作,我知道这可能是一些简单的像这样,如果我将来做类似的事情,我会牢记这一点。谢谢Marcela! – hexobolic 2014-09-18 17:34:01