事件处理基础知识Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本 您可以将事件视为 SWF 文件中发生的程序员感兴趣的任何类型的事件。例如,大多数 SWF 文件都支持某些类型的用户交互,无论是像响应鼠标单击这样简单的用户交互,还是像接受和处理表单中输入的数据这样复杂的用户交互。与 SWF 文件进行的任何此类用户交互都可以视为事件。也可能会在没有任何直接用户交互的情况下发生事件,例如,从服务器加载完数据或者连接的摄像头变为活动状态时。 在 ActionScript 3.0 中,每个事件都由一个事件对象表示。事件对象是 Event 类或其某个子类的实例。事件对象不但存储有关特定事件的信息,还包含便于操作此事件对象的方法。例如,当 Flash Player 或 AIR 检测到鼠标单击时,它会创建一个事件对象(MouseEvent 类的实例)以表示该特定鼠标单击事件。 创建事件对象之后,Flash Player 或 AIR 即“调度”该事件对象,这意味着将该事件对象传递给作为事件目标的对象。作为被调度事件对象的目标的对象称为“事件目标”。例如,当连接的摄像头变为活动状态时,Flash Player 会向事件目标直接调度一个事件对象,此时,该事件对象就是代表摄像头的对象。但是,如果事件目标位于显示列表中,则事件对象会沿显示列表层次向下传递,直到到达事件目标为止。在某些情况下,事件对象随后会沿着相同路线在显示列表层次中向上“冒泡”回去。这种在显示列表层次中遍历的活动称为事件流。 您可以使用事件侦听器“侦听”代码中的事件对象。“事件侦听器”是您编写的用于响应特定事件的函数或方法。若要确保您的程序响应事件,必须将事件侦听器添加到事件目标,或添加到作为事件对象事件流的一部分的任何显示列表对象。 无论何时编写事件侦听器代码,该代码都会采用以下基本结构(以粗体显示的元素是占位符,您将针对具体情况对其进行填写): function eventResponse(eventObject:EventType):void { // Actions performed in response to the event go here. } eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse); 此代码完成两项任务。首先,它定义一个函数,这是指定为响应事件而执行的动作的方法。接下来,调用源对象的 addEventListener() 方法,实际上就是为指定事件“订阅”该函数,以便当该事件发生时,执行该函数的操作。当事件实际发生时,事件目标将检查其注册为事件侦听器的所有函数和方法的列表。然后,它依次调用每个函数或方法,同时将事件对象作为参数传递。 您需要在此代码中更改四项内容以创建自己的事件侦听器。第一,必须将函数名称更改为要使用的名称(必须在两个位置更改此内容,代码将在此处显示 eventResponse)。第二,必须为要侦听的事件(代码中的 EventType)所调度的事件对象指定相应的类名称,并且必须为特定事件(列表中的 EVENT_NAME)指定相应的常量。第三,必须针对调度事件(此代码中的 eventTarget)的对象调用 addEventListener() 方法。您可以选择更改用作函数参数(此代码中的 eventObject)的变量的名称。 重要概念和术语以下参考列表包括您在编写事件处理例程时会遇到的重要术语。
|
|