2011-11-25 3 views
2

Textinputs 및 Button도 보유하고있는 Bordercontainer에서 찾은 모든 이미지 만 제거하려면 어떻게합니까? 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가 말한대로 i -' – RIAstar

+0

은 거꾸로 돌아다 보니 가장 쉬운 옵션입니다. –

답변

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 
    } 
}