2011-02-02 131 views
0

冒泡我有一個包含4個按鈕的MovieClip:停止事件在Flash

resolutions

當用戶將鼠標從容器中,它應該消失:

this.resolutions.addEventListener(MouseEvent.MOUSE_OUT, this.resolutionsClose); 

當用戶移動鼠標在4個按鈕中的任何一箇中,事件都會冒泡到容器中。這不是預期的行爲。當4個按鈕中沒有一個具有鼠標輸出處理程序時,如何阻止這種傳播?

回答

3

偵聽容器上的MouseEvent.ROLL_OUT事件。

+0

總是忘記那個...... – subb 2011-02-02 08:31:31

0

不要讓您的按鈕兒童的容器。或者在你的按鈕上,聽同一個事件,並在其上調用stopImmediatePropagation()。

+0

這是方便的按鈕是容器的孩子,所以,當容器移動時,按鈕與它一起移動。您確定在4個按鈕上附加MOUSE_OUT監聽器是否是最乾淨的方式?如果這是一個更復雜的例子,有更多的元素和更多的嵌套呢? – JoJo 2011-02-02 03:44:51

2

你有2個解決方案(加上一個由TandemAdam建議):

1 - 使用將useCapture參數

this.resolutions.addEventListener(MouseEvent.MOUSE_OUT, this.resolutionsClose, true); 

,您會收到當它向下鑽取顯示列表,而不是冒泡的事件因此你的容器將在它的孩子面前發送。

2 - 檢查你的事件處理程序,如果event.target是你的容器:

private function onMouseOut(e:Event):void 
{ 
    if(e.target == this.resolutions){ 
    // the original dispatcher was your resolutions container. 
    } 
}