当我在事件监听器中添加新的事件监听器时,我无法让事件停止在as3中传播。当我不想要它时,我的第二个事件监听器被调用。
this.addEventListener(MouseEvent.CLICK, firstlistener);
function firstlistener(e:Event)
{
//do stuff
e.stopImmediatePropagation();
this.addEventListener(MouseEvent.CLICK, secondlistener);
}
答案 0 :(得分:4)
您可以同时添加firstListener
和secondListener
,但请将第一个的优先级设置为更高。这样它就可以有条件地阻止传播到第二个。
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