2011-10-02 65 views
1

如果我這樣做:在Flash中添加按鈕時,事件觸發的順序是什麼?

myButton.addEventListener(MouseEvent.CLICK, doThingA); 
    myButton.addEventListener(MouseEvent.CLICK, doThingB); 

是否有任何保證,當用戶點擊這個按鈕的事件會在一定順序被解僱,如果是這樣,有什麼順序?或者第一個事件是否被刪除?

回答

2

它們在註冊順序中被調用,因此在您的示例中doThingA將在doThingB之前調用,只要它們具有相同的優先級。

要改變哪個是首先觸發的,那麼只需爲每個偵聽器添加一個單獨的優先級。具有最高優先級的監聽器將首先被觸發,然後被優先級較低的那個監聽器觸發。

myButton.addEventListener(MouseEvent.CLICK, doThingA, false, 0); // second 
myButton.addEventListener(MouseEvent.CLICK, doThingB, false, 1); // first 

希望有幫助。

0

它們都有一個默認優先級爲零(priority:int = 0來自參數爲addEventListener的參數),所以順序就是它們添加的順序。

要在此之後更改順序,您需要重新註冊偵聽器。

另一種方法是創建幫助函數,將多個監聽器推送到列表中,併爲每個監聽者命名。然後在該輔助函數中添加事件。

myButton.addEventListenerHelper(TypeA, MouseEvent.CLICK, doThingA, false, 0); 
myButton.addEventListenerHelper(TypeB, MouseEvent.CLICK, doThingB, false, 1); 
// And then remove by making some helper function to iterate the list for the 
// given listener 
myButton.removeEventListenerHelper(TypeA, MouseEvent.CLICK); 
相關問題