2012-04-12 14 views
3

このコードは、エラーがスローされます。ActionScript:これはどうして失敗するのですか?

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. 

どのようにこれをすることができますか?私はそれが子供であるかどうか前もってチェックしています。

+0

子供がいるかどうかを確認するコードを投稿できますか? – 11684

+0

小切手は含まれています – clamp

+0

oops 、誤読... – 11684

答えて

5

は、サブジェクトが呼び出し元の子孫である場合はtrueを返します。これは、あなたが親をチェックすることができ、あまりにも間接的な子孫のためなどの子供たちの子供たち

Determines whether the specified display object is a child of the DisplayObjectContainer instance or the instance itself. The search includes the entire display list including this DisplayObjectContainer instance. Grandchildren, great-grandchildren, and so on each return true.

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

をtrueを返します:

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

あるいは、より汎用的な処分の解決のため:

if(modalMessage) { 
    if(modalMessage.parent) DisplayObjectContainer(modalMessage.parent).removeChild(modalMessage); 
    modalMessage = null; 
} 
関連する問題