次のようにステージに MC を追加する関数を使用する場合:
var myChild:MC= new MC();
function somefunc()
{
stage.addChild(myMC)
}
しかし、次の方法で mc を削除しようとすると:
stage.removeChild(myMC)
提供された DisplayObject は呼び出し元エラーの子である必要があります... 提案や回避策はありますか?
次のようにステージに MC を追加する関数を使用する場合:
var myChild:MC= new MC();
function somefunc()
{
stage.addChild(myMC)
}
しかし、次の方法で mc を削除しようとすると:
stage.removeChild(myMC)
提供された DisplayObject は呼び出し元エラーの子である必要があります... 提案や回避策はありますか?
アイテムがステージ上にある場合、コードは機能するはずです。おそらく、次のような条件ステートメントで修飾します。
if (myMC.stage != null)
stage.removeChild(myMC);
または、次のコードを使用することもできますが、おそらくベスト プラクティスではありません。
if (myMC.parent != null)
myMC.parent.removeChild(myMC);
問題はremoveChildにはありません。ディスプレイリストと一緒です。表示オブジェクトの親プロパティを確認すると、「removeChild」を呼び出すとnullになります。
null になるのは、多くの理由が考えられます。
可能であれば、movieClip を隠したり表示したりしてみてください。コードが許す限り、一貫して削除および追加するよりも少し速いと思います。これは単なる提案であることに注意してください。私よりも賢い人があなたを助けることができません..
このフェイル セーフを使用することもできます。
if(myMC.parent) myMC.parent.removeChild(myMC);
オブジェクトを削除する前に、そのオブジェクトに追加したすべての EventListeners を削除するだけで、この問題を解決できました。