如果我这样做:
myButton.addEventListener(MouseEvent.CLICK, doThingA);
myButton.addEventListener(MouseEvent.CLICK, doThingB);
是否有任何保证,当用户点击按钮时,事件将按某种顺序触发,如果是,那么订单是什么?或者第一个事件是否被删除?
答案 0 :(得分:2)
在注册的顺序中调用它们,因此在您的示例中doThingA
将在doThingB
之前调用,只要它们具有相同的优先级。
要更改首先触发的内容,只需为每个侦听器添加一个单独的优先级。首先触发优先级最高的侦听器,然后触发优先级较低的侦听器。
myButton.addEventListener(MouseEvent.CLICK, doThingA, false, 0); // second
myButton.addEventListener(MouseEvent.CLICK, doThingB, false, 1); // first
希望有所帮助。
答案 1 :(得分: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);