在默认情况下,给一个对象添加多个相同的事件侦听,这些侦听器将以它们的
注册顺序触发。
如果要改变事件侦听器触发的默认顺序,可以使用addEventListener()方法的priority参数。priority是addEventListener()方法的第四个参数,为int数据类型。priority值较大的侦听器优先触发。
示例:用URLLoader对象加载一个文本文件,对其Event.COMPLETE事件添加两个侦听器A和B(先注册A,后注册B)。强制先触发侦听器B。
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class Main extends Sprite
{
private var txtLoader : URLLoader;
public function Main()
{
super();
txtLoader = new URLLoader();
txtLoader.addEventListener(Event.COMPLETE, completeA, false, 0);
txtLoader.addEventListener(Event.COMPLETE, completeB, false, 1);
txtLoader.load(new URLRequest("a.txt"));
}
private function completeA(e : Event) : void {
trace("complete A start");
}
private function completeB(e : Event) : void {
trace("complete B start");
}
}
}
输出结果为:
complete B start
complete A start
尽管侦听器A注册在B之前,但是B的priority属性的值大于A的,所以当URLLoader对象抛出Event.COMPLETE事件后,侦听器B优先调度。