0

数か月前に AS3 を学んだばかりなので、初心者に聞こえたら申し訳ありません。

これが私の問題です。removeChild を使用しようとしましたが、次のようなエラーがありました: ArgumentError: エラー #2025: 提供された DisplayObject は呼び出し元の子でなければなりません。

というわけで、親をたどったところ「null」でした。しかし、私が持っているすべてのオブジェクトの親を追跡しようとすると、うまくいきました。では、なぜ突然 null になるのでしょうか。そしてランダムに!これを修正する方法はありますか?ありがとう。

4

4 に答える 4

1

参考までに、少し間違いがあると思います。

以下のコードは同じエラーです。

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

それはあなたの場合ですか?

var mc:MovieClip = new MovieClip();
addChild(mc);
var childMc:MovieClip = new MovieClip();
mc.addChild(childMc);

//this line wrong.
stage.removeChild(childMc);

場合stage.removeChild(childMc);によっては、mc.removeChild(childMc);

removeChild()は、指定された子 DisplayObject インスタンスを DisplayObjectContainer インスタンスの子リストから削除することを意味します。なのでparent.removeChild(child);

stagechildMc親の親です。

mcchildMc親です。

それともこのケース?

var mc:MovieClip = new MovieClip();
addChild(mc);
var childMc:MovieClip = new MovieClip();
mc.addChild(childMc);

stage.removeChild(mc);
while(mc.numChildren)
{
    mc.removeChildAt(0);
}

この場合、stage.removeChild(mc); mc child removeChild を試みるこの行によって mc が削除されます。すでに mc が削除されているため、エラーが発生します。child は、以下のほとんどから削除する必要があります。

への変更

while(mc.numChildren)
{
    mc.removeChildAt(0);
}
stage.removeChild(mc);

明確に答えたい場合。コードを添付する必要があります。

于 2013-02-08T07:20:03.957 に答える
1

エラー #2025 から保護する方法は次のとおりです。

if ( container.contains( displayObject ) )
    container.removeChild( displayObject );

ただし、一般的には、以前に追加した DisplayObject のみを削除してください。

于 2013-02-08T08:03:49.120 に答える
0

その親がたまたま何であるかを覚えていないまま、子供を無残に削除したい場合は、次のようにすることができます。

if( child.parent )  child.parent.removeChild( child );
于 2013-02-14T22:21:22.497 に答える
0

removeChild を呼び出す前に、どこかで addChild を使用しましたか?

子は、removeChild を呼び出している親の表示リストにある必要があります。

ステージ上にない限り、親は常に null です。

于 2013-02-08T06:45:05.330 に答える