2011-02-02 7 views
0

У меня есть MovieClip, который содержит 4 кнопки:Стоп события кипящего вспышка

resolutions

Когда Мышка пользователя из контейнера, он должны исчезнуть:

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

Когда мышки пользователя из любой из 4 кнопок событие пузырится до контейнера. Это не ожидаемое поведение. Как остановить это распространение, если ни одна из 4 кнопок не имеет обработчиков мыши?

ответ

3

Слушайте событие MouseEvent.ROLL_OUT на контейнере.

+0

Всегда забывайте об этом ... – subb

0

Не делайте ваши кнопки детьми из контейнера. Или на своих кнопках, прослушайте одно и то же событие и вызовите на нем stopImmediatePropagation().

+0

Это удобно, что кнопки дети контейнера, так что, когда контейнер перемещается, кнопки перемещаются вместе с ним. Вы уверены, что прослушивание MOUSE_OUT на 4-х кнопках - самый чистый способ сделать это? Что, если это был более сложный пример со многими другими элементами и гораздо большим количеством гнездования? – JoJo

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