久々の 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); }