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を返します。これは、間接的な子孫、子の子などにも当てはまります。

指定された表示オブジェクトがDisplayObjectContainerインスタンスの子であるか、インスタンス自体であるかを判別します。検索には、このDisplayObjectContainerインスタンスを含むディスプレイリスト全体が含まれます。孫、ひ孫などはそれぞれtrueを返します。

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 に答える