如果我使用函数将 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 可能有很多原因:
如果可能,您可以尝试隐藏和显示影片剪辑。我认为它比在代码允许的情况下一致地删除和添加要快一些。请记住,这只是一个建议,比我聪明的人无法帮助您。
你也可以使用这个故障保险:
if(myMC.parent) myMC.parent.removeChild(myMC);
我可以通过在删除之前删除我添加到该对象的每个 EventListener 来解决这个问题。