3

私は初心者で、これについて何週間も検索して試しましたが、これを理解することはできません. 以下の単純なコードでは、「指定された DisplayObject は呼び出し元の子でなければなりません」というエラーが発生します。

var square = new squareObj;
addChild(square);
addEventListener(Event.ENTER_FRAME, removeSquare);

function removeSquare(evt:Event):void {
    removeChild(square)
}

squareObj は、AS 用にエクスポートされたライブラリ内のムービークリップです。このコードを正しく動作させるには、どうすれば変更できますか? 私が不足している適切なoopに関する私の知識だと思うので、この問題に関する優れたチュートリアルへのリンクは大歓迎です。

よろしくH

4

1 に答える 1

6

問題は、Enter Frame リスナーが何度も呼び出されることです。最初に DisplayObject が呼び出されると、実際には呼び出し元の子になりますが、その後はそうではありません (既に削除されているため)。

だから私はあなたがすることをお勧めします:

var square = new squareObj;
addChild(square);
addEventListener(Event.ENTER_FRAME, removeSquare);

function removeSquare(evt:Event):void {
    if (contains(square)) {
        removeChild(square)
    }
}

正方形が実際にの子であるかどうかを確認しますthis

var square = new squareObj;
addChild(square);
addEventListener(Event.ENTER_FRAME, removeSquare);

function removeSquare(evt:Event):void {
    removeEventListener(Event.ENTER_FRAME, removeSquare)
    removeChild(square)
}

または、正方形を削除する以外の目的でイベントが必要かどうかに応じて、イベントリスナーを削除します。また、正方形は追加された後すぐに削除されるため、おそらくまったく表示されないことに注意してください。

于 2010-05-10T21:39:43.580 に答える