有没有办法检查DisplayObject A是否是DisplayObject B的后代?

时间:2010-10-26 10:54:46

标签: flash actionscript-3 displayobject

我希望能够快速检查给定的DisplayObject是否是另一个DisplayObject的后代(不是继承意义上的 - 即子,孙子,曾孙,曾孙子等)。 / p>

似乎没有本地方法可以做到这一点,我只能想到两种方法来实现它:

  1. 创建所有嵌套循环的母亲。似乎有点,我不知道,错了吗?
  2. 在'孩子'处发送一个冒泡事件,并检查潜在的'父母'是否收到它。
  3. 我现在正在尝试后者,但会欣赏一些意见。我想创建一个很好的实用程序静态函数,例如:

    static public function isDescendantOf(child:DisplayObject, parent:DisplayObjectContainer):Boolean { 
    
        var isDescendant: Boolean = false;
    
        // perform some magical 
        // check that returns true 
        // if it is a descendant
    
        return isDescendant;
    }
    

2 个答案:

答案 0 :(得分:7)

圣角驼鹿,事件......

parent.contains(child);

请参阅DisplayObjectContainer.contains()的参考资料。

答案 1 :(得分:0)

好的,我使用它,但它使用了一个讨厌的匿名函数。

想知道它是否可以改进?

static public function isDescendantOf(child:DisplayObject, parent:DisplayObjectContainer):Boolean {
    const HELLO:String = "hello";
    var isDescendant:Boolean = false;

    parent.addEventListener(HELLO, function(e:Event):void {
       isDescendant = true;
    });

    child.dispatchEvent(new Event(HELLO, true, false));
    return isDescendant;
}