事件处理基础知识

事件处理简介

您可以将事件视为 SWF 文件中发生的程序员感兴趣的任何类型的事件。例如,大多数 SWF 文件都支持某些类型的用户交互,无论是像响应鼠标单击这样简单的用户交互,还是像接受和处理表单中输入的数据这样复杂的用户交互。与 SWF 文件进行的任何此类用户交互都可以视为事件。也可能会在没有任何直接用户交互的情况下发生事件,例如,从服务器加载完数据或者连接的摄像头变为活动状态时。

在 ActionScript 3.0 中,每个事件都由一个事件对象表示。事件对象是 Event 类或其某个子类的实例。事件对象不但存储有关特定事件的信息,还包含便于操作事件对象的方法。例如,当 Flash Player 检测到鼠标单击时,它会创建一个事件对象(MouseEvent 类的实例)以表示该特定鼠标单击事件。

创建事件对象之后,Flash Player 即“调度”该事件对象,这意味着将该事件对象传递给作为事件目标的对象。作为所调度事件对象的目标的对象称为“事件目标”。例如,当连接的摄像头变为活动状态时,Flash Player 会向事件目标直接调度一个事件对象,此时,该事件对象就是代表摄像头的对象。但是,如果事件目标在显示列表中,则在显示列表层次结构中将事件对象向下传递,直到到达事件目标为止。在某些情况下,该事件对象随后会沿着相同路线在显示列表层次结构中向上“冒泡”回去。显示列表层次结构中的这种遍历行为称为“事件流”。

您可以使用事件侦听器“侦听”代码中的事件对象。“事件侦听器”是您编写的用于响应特定事件的函数或方法。要确保您的程序响应事件,必须将事件侦听器添加到事件目标,或添加到作为事件对象事件流的一部分的任何显示列表对象。

无论何时编写事件侦听器代码,该代码都会采用以下基本结构(以粗体显示的元素是占位符,您将针对具体情况对其进行填写):

function eventResponse(eventObject:EventType):void
{
    // 此处是为响应事件而执行的动作。
}

eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse);

此代码执行两个操作。首先,它定义一个函数,这是指定为响应事件而执行的动作的方法。接下来,调用源对象的 addEventListener() 方法,实际上就是为指定事件“订阅”该函数,以便当该事件发生时,执行该函数的动作。当事件实际发生时,事件目标将检查其注册为事件侦听器的所有函数和方法的列表。然后,它依次调用每个对象,以将事件对象作为参数进行传递。

您需要在此代码中更改四项内容以创建自己的事件侦听器。第一,必须将函数名称更改为要使用的名称(必须在两个位置更改此内容,代码将在此处显示 eventResponse)。第二,必须为要侦听的事件(代码中的 EventType)所调度的事件对象指定相应的类名称,并且必须为特定事件(列表中的 EVENT_NAME)指定相应的常量。第三,必须针对调度事件(此代码中的 eventTarget)的对象调用 addEventListener() 方法。您可以选择更改用作函数参数(此代码中的 eventObject)的变量的名称。

常见事件处理任务

下面是常见的事件处理任务,本章将介绍其中的每项任务:

重要概念和术语

以下参考列表包含将会在本章中遇到的重要术语:

完成本章中的示例

学习本章的过程中,您可能想要自己动手测试一些示例代码清单。本章中的几乎所有代码清单都包括一个 trace() 函数调用,用于测试代码的结果。要测试本章中的代码清单,请执行以下操作:

  1. 创建一个空的 Flash 文档。
  2. 在时间轴上选择一个关键帧。
  3. 打开“动作”面板,将代码清单复制到“脚本”窗格中。
  4. 使用“控制”>“测试影片”运行程序。

    您将在“输出”面板中看到该代码清单的 trace 函数的结果。

某些代码清单更为复杂一些,并且编写为类的形式。要测试这些示例,请执行以下操作:

  1. 创建一个空的 Flash 文档并将它保存到您的计算机上。
  2. 创建一个新的 ActionScript 文件,并将它保存到 Flash 文档所在的目录中。文件名应与代码清单中的类的名称一致。例如,如果代码清单定义一个名为 EventTest 的类,则使用名称 EventTest.as 来保存 ActionScript 文件。
  3. 将代码清单复制到 ActionScript 文件中并保存该文件。
  4. 在 Flash 文档中,单击舞台或工作区的空白部分,以激活文档的“属性”检查器。
  5. 在“属性”检查器的“文档类”字段中,输入您从文本中复制的 ActionScript 类的名称。
  6. 使用“控制”>“测试影片”运行程序。

    您将在“输出”面板中看到该示例的结果。

测试示例代码清单的这些技术在测试本章内的示例代码清单中有更详细的介绍。


Flash CS3

 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://livedocs.adobe.com/flash/9.0_cn/main/00000135.html