2012-03-19 26 views
0

私はイベント駆動のフラッシュプログラムを持っています。オブジェクトが子供の場合に限り、removeChild()に電話する必要があります。 getChildByName()と他のほとんどの関数はこれを許可していないようですが、子ではないオブジェクトに対してremoveChild()を呼び出すと、エラーが発生します。私はオプションは、スローされたエラーをキャッチし、それを無視することがありますが、それは悪い解決策のように思える。子が存在するかどうかを確認する

ご協力いただきましてありがとうございます。

答えて

2

私は通常ちょうどif(parent)removeChild()をラップエラーを回避するには、次の

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

スプライトに親がない場合、if()にnullが与えられ、removeChild()が呼び出されないことを意味します。

removeChild()も子供のparentから実行されています(私たちはすでに確認済みですが、それはその周りのです)。これは、対象となる親がで、常にであることを意味します。


parentはしばしば忘れられたが、すべてのDisplayList関連の操作を簡素化するための非常に強力な財産です。

+0

downvoterは精巧に扱うのですか? – Marty

+0

次のようにすることもできます:sprite.parent && sprite.parent.removeChild(スプライト); –

+0

@mackeそれを愛する。 – Marty

2

のは、あなたがobjとそのはず親pを持っている、とあなたがしている場合のみobjが実際pの子である場合、pからobjを削除したいとしましょう。

if (obj.parent == p) 
    p.removeChild(obj); 

これは適切な方法です。

pはその後、nullことができれば:

if (p && obj.parent == p) 
    p.removeChild(obj); 

自体は、その後、null可能性がありobj場合:

if (obj && p && obj.parent == p) 
    p.removeChild(obj); 
関連する問題