iLeichun

当前位置: 首页 > 个人日志

AS3如何移除容器下所有子显示对象

分类:个人日志   来源:原创   时间:2011-11-27 00:22:49

as3开发中,当需要对某些显示对象重新添加的时候,需要移除原来的显示对象,但有时候会出现移除指定显示对象子元素的时候为什么只移除了一半?请认真阅读下文,你将会豁然开朗。

下列代码先向mainPanel中添加5个显示对象。
var mainPanel:Sprite = new Sprite();
var s1:Sprite = new Sprite();
var s2:Sprite = new Sprite();
var s3:Sprite = new Sprite();
var s4:Sprite = new Sprite();
var s5:Sprite = new Sprite();

mainPanel.addChild(s1);
mainPanel.addChild(s2);
mainPanel.addChild(s3);
mainPanel.addChild(s4);
mainPanel.addChild(s5);
addChild(mainPanel);


下面我们做删除操作:
for(var i:int = 0; i < mainPanel.numChildren; i++) {
    mainPanel.removeChildAt(0);
}
trace(mainPanel.numChildren);

我们将看到最后输出2,说明还有2个显示对象没有删除,为什么?

我们试着做如下修改:
for(var i:int = 0; i < mainPanel.numChildren;) {
    mainPanel.removeChildAt(0);
}
trace(mainPanel.numChildren);

现在输出是0,说明删除完成了,为什么会这样?原来当进入下一次循环的时候mainPanel.numChildren将重新计算,开始是5;第二次将变成4,那时i=1;第三次变成3,i=2;……以此类推你就知道答案了。
为了简便,你可以把什么的代码改成如下格式:
while(mainPanel.numChildren) {
    mainPanel.removeChildAt(0);
}
trace(mainPanel.numChildren);

 

更多