如何只删除Bordercontainer中同时包含Textinputs和Buttons的每张图片?
我试过了:
for(var i:int=0;i<container.numElements;i++){
if(container.getElementAt(i) is Image){
container.removeElementAt(i);}
}
但正如预期的那样,这个循环并不完全有效,因为numElements更改意味着并非所有图像都被删除。 我知道这有一些简单的伎俩...但我现在无法想到它......请帮忙
答案 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
}
}