2010-10-26 56 views
1

我希望能夠快速檢查給定的DisplayObject是否是另一個DisplayObject的後代(而不是繼承意義上的 - 也就是孩子,孫輩,曾孫,曾曾孫等)。有沒有辦法檢查DisplayObject A是否是DisplayObject B的後代?

似乎有不被本機的方式來做到這一點,我只能想到的兩種方式來實現它:

  1. 創建所有的嵌套循環的母親。似乎有點,我不知道,錯了?
  2. 在'孩子'中發送冒泡事件並檢查潛在的「父母」是否收到冒泡事件。

我現在正在嘗試後者,但會欣賞一些輸入。我想創建一個很好的實用靜態功能,例如:

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; 
} 

回答

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; 
} 
相關問題