コンテナ内の全ての子 DisplayObject を削除する方法

久々の Flash プロジェクトで ActionScript 3.0 のキャッチアップに忙しい。下手に ActionScript 2.0 を知っていると、逆にラーニングコストが上がる気がする。

さて本題。コンテナ内の全ての子 DisplayObject を削除するには、幾つか方法がある。Essential ActionScript 3.0 の P.477 より。

ボトムアップ

底辺の DisplayObject から消していく方法。だるま落としのイメージに近い。

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

while を for に書き直すと見慣れないコードになる。

for (;numChildren > 0;) {
removeChildAt(0);
}

トップダウン

上から取り除いていく方法。

while (numChildren > 0) {
removeChildAt(numChildren - 1);
}

これはひどいコード。やってはいけない

深度と子の数は動的に変化する。よって以下のコードでは削除漏れが発生する。

for (var i:int = 0; i < numChildren; i++) {
removeChildAt(i);
}