as3停止事件传播
问题描述:
我在遇到事件时无法在事件侦听器中添加新事件侦听器时停止在as3中传播。当我不想要它时,我的第二个事件监听器正在被调用。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
稍微清洁一些。
答
由于这是的MouseEvent,试图通过:
e:MouseEvent
为处理器的说法,而不是:
e:Event
如果此代码是你真正的代码,有一个语法错误:它不是如stopImidiatePropagation(); but e.stopImediatePropagation(); – 2010-07-20 16:04:30
不是我真正的代码那只是一个错字 – jhultgre 2010-07-20 16:43:52
其实,你们都有错别字。它是stopImmediatePropagation()...注意到这两个m – Boundless 2012-01-22 19:24:51