Actionscript 3 Actionscript删除显示对象

Actionscript 3 Actionscript删除显示对象,actionscript-3,Actionscript 3,我不明白为什么我的所有显示对象都没有被删除。当我按下按钮时,我希望跟踪并删除形状和按钮,但什么也没有发生: import fl.controls.Button; var shape1:Shape = new Shape(); shape1.name = "Shape1"; shape1.graphics.lineStyle(4, 0x000000); shape1.graphics.beginFill(0x000055, 0.5); shape1.graphics.drawRoundRect(

我不明白为什么我的所有显示对象都没有被删除。当我按下按钮时,我希望跟踪并删除形状和按钮,但什么也没有发生:

import fl.controls.Button;

var shape1:Shape = new Shape();
shape1.name = "Shape1";
shape1.graphics.lineStyle(4, 0x000000);
shape1.graphics.beginFill(0x000055, 0.5);
shape1.graphics.drawRoundRect(50, 50, 100, 75, 20, 30);
shape1.graphics.endFill();
addChild(shape1);

var shape2:Shape = new Shape();
shape2.name = "Shape2";
shape2.graphics.lineStyle(4, 0xFFFF99);
shape2.graphics.beginFill(0x550000, 0.5);
shape2.graphics.drawRoundRect(100, 75, 200, 175, 50, 10);
shape2.graphics.endFill();
addChild(shape2);

button1.addEventListener(MouseEvent.CLICK, pushButton);
function pushButton(evt:MouseEvent):void
    {
    for(var amount:int = numChildren; amount == 0; amount--)
        {
        trace(amount);
        var disObj:DisplayObject = getChildAt(amount);
        trace("Removing " + disObj.name);
        removeChildAt(amount);
        }
    }

我意识到有更好的方法来实现这一点,但我正在学习,因此我只对上述代码不起作用的原因感兴趣。

将for循环更改为:forvar amount:int=numChildren-1;金额>=0;amount-

从DisplayObject中删除子对象不是一种非常可靠的方法,但是像这样的while循环可以解决这个问题:

while (displayObject.numChildren > 0)
{
    displayObject.removeChildAt(0);
}

使用for循环实现,您会发现一些对象将被删除,但不会全部删除。while循环将一直运行,直到什么都没有剩下。只需将“displayObject”替换为要从中删除内容的任何容器对象。

看起来循环持续性条件永远不会运行,因为您声明只有当子项==0时,循环才会“继续”