0

配列でインスタンスを作成しているプログラムを実行していますが、後でそれらを取り除く方法がわかりません..より明確に説明するために、ここに私のコードがあります:

(私はすぐに例を作りました...そのため、コードには変数が1つしかありません)

for (var q:int = 0; q < caw1.length; q++)
{
    addChild(caw1[q]);
    caw1[q].x = 9;
    caw1[q].y = 833;
}



half2.addEventListener(MouseEvent.CLICK, nxt2);
function nxt2(e:MouseEvent)
{
            removeChild(half2);
    removeChild(caw1[1]);
    half2.removeEventListener(MouseEvent.CLICK, nxt2);
}
4

2 に答える 2

1

それらをもう一度ループするだけで何が問題になっていますか?

function nxt2(e:MouseEvent)
{
    removeChild(half2);
    for (var i:int = 0; i < caw1.length; i++) {
        removeChild(caw[i]);
    }
    half2.removeEventListener(MouseEvent.CLICK, nxt2);
}
于 2013-02-13T06:30:56.143 に答える
0

FP 11 以降、新しいメソッドが追加されました。つまりremoveChildren()。で for ループを使用するのremoveChildren()ではなく、 を使用しますremoveChild()。より合理的です。

DisplayObjectContainer インスタンスの子リストからすべての子 DisplayObject インスタンスを削除します。削除された子の親プロパティは null に設定され、子への他の参照が存在しない場合、オブジェクトはガベージ コレクションされます。

ガベージ コレクターは、未使用のメモリ領域を再割り当てします。変数またはオブジェクトがアクティブに参照または格納されなくなった場合、ガベージ コレクターは、他の参照が存在しない場合、占有していたメモリ領域を一掃して消去します。

これを試して:

function nxt2(e:MouseEvent)
{
    removeChild(half2);
    removeChildren(0,caw1.length-1);
    half2.removeEventListener(MouseEvent.CLICK, nxt2);
}
于 2013-02-13T06:51:56.953 に答える