2014-09-18 79 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