停止Flash中的事件冒泡

时间:2011-02-02 02:27:48

标签: actionscript-3 events

我有一个包含4个按钮的MovieClip:

resolutions

当用户将鼠标移出容器时,它应该消失:

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

当用户将鼠标移出4个按钮时,事件会冒泡到容器中。这不是预期的行为。当4个按钮都没有鼠标输出处理程序时,如何停止传播?

3 个答案:

答案 0 :(得分:3)

侦听容器上的MouseEvent.ROLL_OUT事件。

答案 1 :(得分: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.
    }
}

答案 2 :(得分:0)

不要让你的按钮成为容器的子项。或者在按钮上,监听同一事件,并在其上调用stopImmediatePropagation()。