如果我正在使用功能将mc添加到舞台,如下所示:
var myChild:MC= new MC();
function somefunc()
{
stage.addChild(myMC)
}
但是当我尝试删除mc时:
stage.removeChild(myMC)
我得到提供的DisplayObject必须是调用者错误的子代... 任何建议或解决方法?
答案 0 :(得分:6)
如果项目在舞台上,您的代码应该有用。也许用条件语句对其进行限定:
if (myMC.stage != null)
stage.removeChild(myMC);
或者您可以使用以下代码,但这可能不是最佳做法。
if (myMC.parent != null)
myMC.parent.removeChild(myMC);
答案 1 :(得分:3)
问题不在于removeChild。这是与displaylist。如果检查displayobject的parent属性,当你调用“removeChild”时它将为null。
为什么它变为null可能是由于很多原因:
答案 2 :(得分:2)
如果可能,您可以尝试隐藏并显示movieClip。 我认为它比删除和添加一致,代码允许的速度快一点。 请记住,这只是一个建议,一个比我聪明的人能够帮助你...
答案 3 :(得分:1)
您也可以使用此故障安全:
if(myMC.parent)myMC.parent.removeChild(myMC);
答案 4 :(得分:0)
我可以通过简单地删除添加到该对象的每个EventListener来删除它之前解决这个问题。