当我在事件监听器中添加新的事件监听器时,我无法让事件在 as3 中停止传播。当我不希望的时候,我的第二个事件监听器被调用。
this.addEventListener(MouseEvent.CLICK, firstlistener);
function firstlistener(e:Event)
{
//do stuff
e.stopImmediatePropagation();
this.addEventListener(MouseEvent.CLICK, secondlistener);
}
最佳答案
您可以同时添加firstListener
和secondListener
,但将第一个的优先级设置为更高。这样它就可以有条件地停止传播到第二个。
this.addEventListener(MouseEvent.CLICK, firstlistener, false, 100);
this.addEventListener(MouseEvent.CLICK, secondlistener);
function firstlistener(e:Event)
{
if (...condition...) {
e.stopImmediatePropagation();
}
}
但是如果您可以控制两个监听器,那么最好有条件地从第一个监听器调用第二个监听器或广播第二个监听器,这是不同的。比使用 stopImmediatePropagation
更简洁。
关于flash - as3 停止事件传播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3291953/