事件是一件值得注意的运行期事情,具有在一个程序中触发一个响应的潜力。在as中,事件可以分为两类:内建事件,它描述运行期环境的状态变化;和自定义事件,他描述一个程序的状态变化。
为了在一个as程序中处理或响应事件,我们使用事件监听器。事件监听器是一个函数或方法,它注册是用以当一个指定的事件发生时开始执行。
事件监听优先级:默认情况下,当多个事件监听器给一个指定的对象注册了单个事件类型时,这些监听器以它们注册的顺序被触发。例如,在下列的代码中
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class FileLoader extends Sprite
{
public function FileLoader()
{
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, completeListenerA);
urlLoader.addEventListener(Event.COMPLETE, completeListenerB);
urlLoader.load(new URLRequest("someFile.txt"));
}
private function completeListenerA(e:Event):void
{
trace("Listener A:Load complete");
}
private function completeListenerB(e:Event):void
{
trace("Listener B:Load complete");
}
}
}
当Event.COMPLETE事件发生时,completeListenerA()在completeListenerB()之前执行,因为completeListenerA()注册于completeListenerB()之前。为了改变事件监听器被触发的默认顺序,我们可以使用addEventListener()方法的priority参数,如下列的一般代码所示:addEventListener(type, listener, useCapture, priority, useWeakReference)priority参数是一个整数,当涉及给同一个对象的注册了同一个事件的多个监听器时,它表示注册的事件监听器被触发的顺序。此值越大,被触发的优先级就越高。