了解事件处理过程

下面分步描述了创建事件侦听器时执行的过程。在本例中,您将创建一个侦听器函数,在单击名为 myButton 的对象时将调用该函数。

程序员实际编写的代码如下所示:

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

myButton.addEventListener(MouseEvent.CLICK, eventResponse);

下面是此代码在 Flash Player 中运行时的实际工作方式:

  1. 加载 SWF 文件时,Flash Player 会注意到以下情况:有一个名为 eventResponse() 的函数。


    开始注意到名为“eventResponse()”的函数的 Flash Player 表示形式

  2. Flash Player 随后运行该代码(具体地说,是指不在函数中的代码行)。在本例中,只有一行代码:针对事件源对象(名为 myButton)调用 addEventListener() 方法,并将 eventResponse 函数作为参数进行传递。


    调用对象 myButton 的 addEventListener() 方法的 Flash Player 表示形式,它订阅 eventResponse() 作为侦听器。

    1. 在内部,myButton 包含正在侦听其每个事件的函数的列表,因此,当调用其 addEventListener() 方法时,myButtoneventResponse() 函数存储在其事件侦听器列表中。


      将 eventResponse() 存储在 myButton 的内部侦听器列表中的 Flash Player 表示形式

  3. 在某一时刻,用户单击 myButton 对象以触发其 click 事件(在代码中将其标识为 MouseEvent.CLICK)。


    正在单击按钮 myButton 的用户鼠标光标的外观

    此时发生了以下事件:

    1. Flash Player 创建一个对象,它是与所述事件(本示例中为 MouseEvent)关联的类的实例。对于很多事件,这是 Event 类的实例;对于鼠标事件,这是 MouseEvent 实例;对于其它事件,这是与该事件关联的类的实例。创建的该对象称为“事件对象”,它包含有关所发生的事件的特定信息:事件类型、发生位置以及其它特定于事件的信息(如果适用)。


      创建新对象“eventObject”的 Flash Player 表示形式

    2. Flash Player 随后查看 myButton 存储的事件侦听器的列表。它逐个查看这些函数,以调用每个函数并将事件对象作为参数传递给该函数。由于 eventResponse() 函数是 myButton 的侦听器之一,因此,Flash Player 将在此过程中调用 eventResponse() 函数。


      调用函数 eventResponse() 的 Flash Player 表示形式(具体来说,是 myButton),它将对 eventObject 的引用作为参数传递

    3. 当调用 eventResponse() 函数时,将运行该函数中的代码,因此,将执行您指定的动作。


      执行函数“eventResponse()”中包含的操作的 Flash Player 表示形式


Flash CS3

 

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

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