2011-11-25 37 views
2

如何只刪除BorderContainer中的每個圖像,該圖像也包含Textinputs和Buttons?Flex AS3:從某個類的容器中查找和刪除元素

我想:

for(var i:int=0;i<container.numElements;i++){ 
if(container.getElementAt(i) is Image){ 
container.removeElementAt(i);} 
} 

但由於預計今年循環不充分,因爲變化包含numElements工作,這意味着並不是所有的圖像移除。 我知道這有一些簡單的技巧...但我現在不能想到它......請幫助

+1

環路向後:'VAR:INT = container.numElements-1; I> = 0;我 - ' – RIAstar

+0

RIAstar說,向後循環,這是最簡單的選擇 –

回答

3

正如評論者所說,似乎循環倒退將是實現它的方式。我想嘗試這樣的事:

var totalElements : int = container.numElements; 
for(var i:int=totalElements-1;i>=0;i--){ 
if(container.getElementAt(i) is Image){ 
    container.removeElementAt(i); 
} 
} 

通過啓動循環之前存儲在變量中包含numElements,你可以肯定的是在處理循環的價值不會改變。自從你倒退以後,你不必擔心孩子的指數會發生變化。

第二種選擇是將圖像實例排隊在一個循環中,並使用removeElement方法在第二個循環中刪除它們。我懷疑這兩種循環方法的性能會大大降低。

1

向後循環將是1種方式來做到這一點。

另一個辦法是

for(var i:int=0; i<container.numElements; i++){ 
    if(container.getElementAt(i) is Image){ 
     container.removeElementAt(i); 
     i--; //This nullifies the effect of removing an element 
    } 
}