Flex AS3:查找并删除某些类的容器中的元素

时间:2011-11-25 13:56:40

标签: actionscript-3 flex containers elements

如何只删除Bordercontainer中同时包含Textinputs和Buttons的每张图片?

我试过了:

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

但正如预期的那样,这个循环并不完全有效,因为numElements更改意味着并非所有图像都被删除。 我知道这有一些简单的伎俩...但我现在无法想到它......请帮忙

2 个答案:

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