3

此代码引发错误:

    if (modalMessage != null && contains(modalMessage))
    {
        removeChild(modalMessage); // the error is here
        modalMessage = null;            
    }

错误是:

[Fault] exception, information=ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.

怎么会这样?我正在检查它是否是一个孩子。

4

1 回答 1

5

contains()如果主题是调用者的后代,将返回 true。对于间接后代,孩子的孩子等,这也将返回 true。

确定指定的显示对象是 DisplayObjectContainer 实例的子对象还是实例本身。搜索包括整个显示列表,包括此 DisplayObjectContainer 实例。孙子、曾孙等每个都返回真。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObjectContainer.html#contains%28%29

您可以检查父母:

if(modalMessage && modalMessage.parent && modalMessage.parent == this)

或者,对于更通用的处置解决方案:

if(modalMessage) {
    if(modalMessage.parent) DisplayObjectContainer(modalMessage.parent).removeChild(modalMessage);
    modalMessage = null;
}
于 2012-04-12T08:59:53.907 回答