2013-10-31 122 views
0

我希望一個父對象派遣一個事件給所有的孩子聽這個事件。 我嘗試下面的代碼,但沒有成功:孩子不能聽父母事件嗎?

var boxParent:Sprite = new Sprite(); 
var boxChild:Sprite = new Sprite(); 

this.addChild(boxParent); 
boxParent.addChild(boxChild); 

boxChild.addEventListener("parentTalking", onParentTalking); 
boxParent.dispatchEvent(new Event("parentTalking")); 

有沒有辦法這樣做呢?

順便說一句,我希望我能避免做這樣的事情:

for (var i:int = 0; i < boxParent.numChildren; i++) { 
    (getChildAt(i) as MyChild).hereItGoesParentCommand(); 
} 

提前感謝!

+0

有孩子聽臺並綁定本地方法,有父母發送;事件在最終泡沫階段被捕獲http://fahimchowdhury.blogspot.com/2011/06/as3-child-listening-to-parent.html – zamnuts

回答

1

這不是事件冒泡的情況,而是this的情況。基本上,你永遠不可能讓孩子傾聽父母派遣的事件,而必須引用孩子班級中的父母。在你的情況下:

// Inside parent class 
dispatchEvent(new Event("event")); 

// Inside child class 
parent.addEventListener("event",handleEvent); 

該鏈接有一個問題和答案,完全處理您的問題。如果您仍然不明白ActionScript 3中的捕獲和冒泡階段如何工作,那麼只需發表評論,我會找到一些關於它們的解釋的鏈接,或者您可以自己輕鬆找到它們。

+0

您好Xiler,您的解決方案解決了我的問題! 關於事件階段,我已經閱讀了一些文檔,但我還沒有完全理解它。 對於我來說,事件流中「什麼是」「什麼」以及什麼是「倒」有點令人困惑。 謝謝你和@zamnuts! – Nevitones