2

as3.0で小さなゲームを作っています。私はあなた (プレイヤー) を押しつぶそうとしているゲーム内の多くの壁を生成します。

あなたの近くにあるすべての壁を配列と画面から削除しようとしています。初めてボタンを押すと、250px の範囲にあるすべての壁が削除されます。しかし、2回目にボタンを押すと、次のエラーが発生します。

ArgumentError: エラー #2025: 指定された DisplayObject は呼び出し元の子でなければなりません。

これは、すでに削除されている子を削除しようとするためだと思います。次のコードで子が存在するかどうかを確認しようとしましたが、機能していないようです。

if (wallArray[i] != null && contains(wall)) {
    if (wallArray[i].x < 250 + wp_reach){   
        //haalt de muur weg
        //TODO : KIJK OF HET KIND IS

            removeChild(wallArray[i]); 
         }

    }

ボタンの押下を処理する完全なコードは次のとおりです。

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

action.addEventListener(TouchEvent.TOUCH_TAP, fl_TapHandler);

function fl_TapHandler(event:TouchEvent):void
{
    for (var i:Number=0;i<wallArray.length;i++){
        if (wallArray[i] != null && contains(wall)) {
            if (wallArray[i].x < 250 + wp_reach){   
                removeChild(wallArray[i]); 
            }

        }
        else{
            trace ("There is no wall in range yet");
        }
    }   
}
4

1 に答える 1

1

次のように、クエリ内のアイテムが削除するコンテナーの子であるかどうかを常にテストします。

if(wallArray[i] && contains(wallArray[i]))
{
    removeChild(wallArray[i]);
}

よろしくお願いします

于 2012-11-27T13:24:49.533 に答える