如果我這樣做:在Flash中添加按鈕時,事件觸發的順序是什麼?
myButton.addEventListener(MouseEvent.CLICK, doThingA);
myButton.addEventListener(MouseEvent.CLICK, doThingB);
是否有任何保證,當用戶點擊這個按鈕的事件會在一定順序被解僱,如果是這樣,有什麼順序?或者第一個事件是否被刪除?
如果我這樣做:在Flash中添加按鈕時,事件觸發的順序是什麼?
myButton.addEventListener(MouseEvent.CLICK, doThingA);
myButton.addEventListener(MouseEvent.CLICK, doThingB);
是否有任何保證,當用戶點擊這個按鈕的事件會在一定順序被解僱,如果是這樣,有什麼順序?或者第一個事件是否被刪除?
它們在註冊順序中被調用,因此在您的示例中doThingA
將在doThingB
之前調用,只要它們具有相同的優先級。
要改變哪個是首先觸發的,那麼只需爲每個偵聽器添加一個單獨的優先級。具有最高優先級的監聽器將首先被觸發,然後被優先級較低的那個監聽器觸發。
myButton.addEventListener(MouseEvent.CLICK, doThingA, false, 0); // second
myButton.addEventListener(MouseEvent.CLICK, doThingB, false, 1); // first
希望有幫助。
它們都有一個默認優先級爲零(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);