as3停止事件传播

时间:2010-07-20 16:01:20

标签: flash actionscript-3

当我在事件监听器中添加新的事件监听器时,我无法让事件停止在as3中传播。当我不想要它时,我的第二个事件监听器被调用。

this.addEventListener(MouseEvent.CLICK, firstlistener);

function firstlistener(e:Event)
{
    //do stuff
    e.stopImmediatePropagation();
    this.addEventListener(MouseEvent.CLICK, secondlistener);
}

2 个答案:

答案 0 :(得分:4)

您可以同时添加firstListenersecondListener,但请将第一个的优先级设置为更高。这样它就可以有条件地阻止传播到第二个。

this.addEventListener(MouseEvent.CLICK, firstlistener, false, 100);
this.addEventListener(MouseEvent.CLICK, secondlistener);

function firstlistener(e:Event)
{
    if (...condition...) {
        e.stopImmediatePropagation();
    }
}

但如果您可以控制两个侦听器,那么最好有条件地从第一个调用第二个或广播第二个,不同的。比使用stopImmediatePropagation更清洁。

答案 1 :(得分:0)

由于这是一个MouseEvent,请尝试传递:

e:MouseEvent

作为处理程序的参数而不是:

e:Event