在Flash中添加到按钮时,事件会以什么顺序触发?

时间:2011-10-02 23:35:38

标签: flash actionscript-3 flash-cs5

如果我这样做:

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

是否有任何保证,当用户点击按钮时,事件将按某种顺序触发,如果是,那么订单是什么?或者第一个事件是否被删除?

2 个答案:

答案 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);