确定孩子是否存在

时间:2012-03-19 00:11:28

标签: actionscript-3 flash removechild

我有一个事件驱动的Flash程序。当且仅当对象是孩子时,我需要能够调用removeChild()getChildByName()和大多数其他函数似乎不允许这样做,如果你在一个不是孩子的对象上调用removeChild(),它将抛出一个错误。我想一个选项可能是捕获抛出的错误并忽略它,但这似乎是一个糟糕的解决方案。

感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

假设您有obj及其假设的父p,并且您希望从obj移除p,当且仅当obj实际上是p if (obj.parent == p) p.removeChild(obj); 的孩子。

p

这是正确的方法。

如果null可以是if (p && obj.parent == p) p.removeChild(obj); ,那么:

obj

如果null本身可能是if (obj && p && obj.parent == p) p.removeChild(obj); ,那么:

{{1}}

答案 1 :(得分:2)

为避免错误,我通常只在removeChild()中包裹if(parent)

if(sprite.parent)
    sprite.parent.removeChild(sprite);

如果精灵没有父级,则if()中将给出null,这意味着不会调用removeChild()

removeChild()也是从孩子的parent运行的(我们已经确认它存在于其周围的if()语句中)。这意味着目标父母始终是孩子的所有者。


parent经常被遗忘,但它是一个非常强大的属性,可以简化所有DisplayList相关操作。