Actionscript Удаление экранных объектов - PullRequest
0 голосов
/ 19 марта 2010

Я не понимаю, почему ни один из моих экранных объектов не удаляется. когда я нажимаю кнопку, я ожидаю след и удаление обеих фигур и кнопки, но ничего не происходит:

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

Я понимаю, что есть лучшие способы сделать это, но я учусь и поэтому интересуюсь только тем, почему вышеприведенный код не работает.

Ответы [ 3 ]

3 голосов
/ 19 марта 2010

Измените цикл for на: for(var amount:int = numChildren - 1; amount >= 0; amount--)

2 голосов
/ 19 марта 2010

Похоже, что ваше условие продолжения цикла никогда не будет выполнено, потому что вы заявляете, что цикл будет только "продолжаться", когда потомки == 0

2 голосов
/ 19 марта 2010

Это не очень надежный способ удаления дочерних объектов из DisplayObject, хотя цикл while будет сортировать его:

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

С помощью реализации цикла for вы обнаружите, что некоторые объекты будут удалены, но это не приведет к их удалению. Цикл while будет продолжаться, пока ничего не останется. Просто замените displayObject на любой контейнерный объект, из которого вы хотите удалить материал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...