我有一个事件驱动的Flash程序。当且仅当对象是孩子时,我需要能够调用removeChild()
。 getChildByName()
和大多数其他函数似乎不允许这样做,如果你在一个不是孩子的对象上调用removeChild()
,它将抛出一个错误。我想一个选项可能是捕获抛出的错误并忽略它,但这似乎是一个糟糕的解决方案。
感谢任何帮助!
答案 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
相关操作。