处理事件每一个组件在用户与它交互时都会广播事件。例如,当用户单击一个 Button 时,它会调度 MouseEvent.CLICK 事件;当用户选择 List 中的一个项目时,List 会调度 Event.CHANGE 事件。当组件发生重要事情时也会引发事件,例如,当 UILoader 实例完成内容加载时,会生成一个 Event.COMPLETE 事件。若要处理事件,您需要编写在该事件被触发时需要执行的 ActionScript 代码。 组件的事件包括该组件所继承的任何类的事件。这意味着,所有 ActionScript 3.0 用户界面组件都从 UIComponent 类继承事件,因为它是 ActionScript 3.0 用户界面组件的基类。若要查看某一组件广播的事件的列表,请参阅《用于 Adobe® Flash® Professional CS5 的 ActionScript® 3.0 参考》中该组件的类条目的“事件”部分。 有关 ActionScript 3.0 中事件处理的完整说明,请参阅《ActionScript 3.0 编程》。 关于事件侦听器以下要点适用于 ActionScript 3.0 组件的事件处理:
关于事件对象事件对象继承自 Event 对象类,它的一些属性包含了有关所发生事件的信息,其中包括提供事件基本信息的 target 和 type 属性:
如果事件具有其他属性,则会在《用于 Adobe® Flash® Professional CS5 的 ActionScript® 3.0 参考》中该事件的类描述中列出。 事件对象是自动生成的,当事件发生时会将它传递给事件处理函数。 您可以在该函数内使用事件对象来访问所广播的事件的名称,或者访问广播该事件的组件的实例名称。您可以从实例名称访问其它组件属性。例如,下面的代码使用 evtObj 事件对象的 target 属性来访问 aButton 的 label 属性并将它显示在“输出”面板中: import fl.controls.Button; import flash.events.MouseEvent; var aButton:Button = new Button(); aButton.label = "Submit"; addChild(aButton); aButton.addEventListener(MouseEvent.CLICK, clickHandler); function clickHandler(evtObj:MouseEvent){ trace("The " + evtObj.target.label + " button was clicked"); } |
![]() |