コンテナ内の全ての子 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);
}
カテゴリー: Flash   パーマリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>