as3 停止事件传播

jhu*_*gre 2 flash actionscript-3

当我在事件侦听器中添加新的事件侦听器时,我无法让事件停止在 as3 中传播。当我不希望的时候,我的第二个事件侦听器被调用。

this.addEventListener(MouseEvent.CLICK, firstlistener);

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

Sam*_*eff 5

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

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

function firstlistener(e:Event)
{
    if (...condition...) {
        e.stopImmediatePropagation();
    }
}
Run Code Online (Sandbox Code Playgroud)

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