2010-07-20 174 views
2

我在遇到事件時無法在事件偵聽器中添加新事件偵聽器時停止在as3中傳播。當我不想要它時,我的第二個事件監聽器正在被調用。as3停止事件傳播

this.addEventListener(MouseEvent.CLICK, firstlistener); 

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

如果此代碼是你真正的代碼,有一個語法錯誤:它不是如stopImidiatePropagation(); but e.stopImediatePropagation(); – 2010-07-20 16:04:30

+0

不是我真正的代碼那只是一個錯字 – jhultgre 2010-07-20 16:43:52

+3

其實,你們都有錯別字。它是stopImmediatePropagation()...注意到這兩個m – Boundless 2012-01-22 19:24:51

回答

4

您可以在同一時間同時添加firstListenersecondListener,但對於第一次設置優先級要高。這樣它可以有條件地阻止傳播到第二個。

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

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

,但如果你有超過兩個聽衆的控制,那麼它可能會更好有條件地從第一,第二或廣播第二,不同的。比使用stopImmediatePropagation稍微清潔一些。

0

由於這是的MouseEvent,試圖通過:

e:MouseEvent

爲處理器的說法,而不是:

e:Event