1

次のようにステージに MC を追加する関数を使用する場合:

var myChild:MC= new MC();

function somefunc()
{
   stage.addChild(myMC)
}

しかし、次の方法で mc を削除しようとすると:

stage.removeChild(myMC)

提供された DisplayObject は呼び出し元エラーの子である必要があります... 提案や回避策はありますか?

4

5 に答える 5

6

アイテムがステージ上にある場合、コードは機能するはずです。おそらく、次のような条件ステートメントで修飾します。

if (myMC.stage != null)
   stage.removeChild(myMC);

または、次のコードを使用することもできますが、おそらくベスト プラクティスではありません。

if (myMC.parent != null)    
   myMC.parent.removeChild(myMC);
于 2011-08-11T21:27:43.357 に答える
3

問題はremoveChildにはありません。ディスプレイリストと一緒です。表示オブジェクトの親プロパティを確認すると、「removeChild」を呼び出すとnullになります。

null になるのは、多くの理由が考えられます。

  • 親は子の前に null になります。
  • 子または親には、それらを死なせないイベントリスナーがあります。
  • 表示オブジェクトは、削除しようとしているインスタンスではありません。これは、見つけるのが非常に難しい場合があります。removeChild の呼び出し中に、削除しようとしている変数の「名前と親のプロパティ」を見てください
于 2011-09-29T13:39:52.490 に答える
2

可能であれば、movieClip を隠したり表示したりしてみてください。コードが許す限り、一貫して削除および追加するよりも少し速いと思います。これは単なる提案であることに注意してください。私よりも賢い人があなたを助けることができません..

于 2011-08-11T21:27:00.190 に答える
1

このフェイル セーフを使用することもできます。

if(myMC.parent) myMC.parent.removeChild(myMC);

于 2011-08-12T00:31:42.980 に答える
0

オブジェクトを削除する前に、そのオブジェクトに追加したすべての EventListeners を削除するだけで、この問題を解決できました。

于 2013-10-17T13:54:01.287 に答える