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 可能有很多原因:

  • 父级在子级之前无效。
  • 孩子或父母有不会让他们死的事件监听器。
  • 显示对象实际上不是您要删除的实例。这可能很难找到。查看您在调用 removeChild 时尝试删除的变量的“名称和父属性”
于 2011-09-29T13:39:52.490 回答
2

如果可能,您可以尝试隐藏和显示影片剪辑。我认为它比在代码允许的情况下一致地删除和添加要快一些。请记住,这只是一个建议,比我聪明的人无法帮助您。

于 2011-08-11T21:27:00.190 回答
1

你也可以使用这个故障保险:

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

于 2011-08-12T00:31:42.980 回答
0

我可以通过在删除之前删除我添加到该对象的每个 EventListener 来解决这个问题。

于 2013-10-17T13:54:01.287 回答