2013-08-29 125 views
0

我有一個數組,其中包含幾個MC ...我的應用程序中有一個清除數組並清除舞臺上的MC的重置。循環和刪除存儲在數組中的兒童

if (myArray.length > 0) 
      { 
      removeChild(myArray[0]); 
      } 

但是,如果我試圖通過某種方式數組進行迭代,以消除所有對象(PR甚至只是一個在這種情況下),它似乎並不:如果我在這樣的時刻考驗之一,它工作正常知道父對象是什麼,因此不能刪除它。我試過明確告訴它myArray[0].parent.(removeChild(...)但它會引發同樣的錯誤。目前我正在嘗試:

while (myArray.length > 0) 
     { 
      removeChild(myArray[0]); // this line 'must be a child of the caller' 
     } 

其他類型的循環返回相同的錯誤。如果我跟蹤父對象,它也會打印正確的對象...所以我很茫然。我錯過了一些明顯的東西,還是有更好的方法來做到這一點?

回答

2

您的代碼將一直嘗試刪除myArray中的第一個元素。所以第一次你可以刪除元素,而元素不再是他父母的孩子。當第二次,你試圖再次移除第一個元素,並且因爲元素沒有父項(它上次被刪除),它會給你一個錯誤。

所以你應該刪除數組中的每個元素,而不是相同的元素。

試試這個

while (myArray.length > 0) 
{ 
    var mc = myArray.shift(); 
    removeChild(mc); 
} 

如果你不想在myarray的刪除元素,你可以使用一個計數來保存,如果您有刪除所有elements.Or只是用於每個喜歡你做。

var count:int = 0; 

while (count < myArray.length) 
{ 
    var mc = myArray[count]; 
    removeChild(mc); 
    count++; 
} 
+0

很酷的是的...我也嘗試過拼接,因爲我需要清除數組,但是我可以在兒童被刪除後做到這一點。拼接只是將所有東西推到陣列的前端,最終產生相同的問題。謝謝! – MaxG