使用侦听器对象

要使用侦听器对象,您可以使用 this 关键字指定当前对象作为侦听器、使用应用程序中已有的对象或创建一个新对象。

如果使用 this 对象,请使用与要处理的事件相同的名称定义一个函数;语法如下:

function eventName(evtObj:Object){
    // 此处是您的代码
};

如果要使用一个新的侦听器对象,则必须创建该对象,定义一个与事件同名的属性,然后将该属性分配给在广播事件时执行的回调函数,如下所示:

var listenerObject:Object = new Object();
listenerObject.eventName = function(evtObj:Object){
    // 此处是您的代码
};

如果要使用现有对象,请使用与新侦听器对象相同的语法,但不创建新对象,如下所示:

existingObject.eventName = function(evtObj:Object){
    // 此处是您的代码
};

提示

evtObj 参数是在事件被触发时自动生成,并传递给回调函数的对象。该事件对象的属性包含有关事件的信息。有关详细信息,请参阅关于事件对象

最后,从广播事件的组件实例调用 addEventListener() 方法。addEventListener() 方法采用两个参数:一个是指示事件名称的字符串,另一个是对侦听器对象的引用。

componentInstance.addEventListener("eventName", listenerObject);

以下是整个代码段,您可以复制并粘贴它。请确保用实际值替换所有斜体代码;您可以使用 listenerObjectevtObj 或任何其它合法标识符,但必须将 eventName 更改为事件的名称。

var listenerObject:Object = new Object();
listenerObject.eventName = function(evtObj:Object){
    // 触发事件时
    // 执行此处的代码
};
componentInstance.addEventListener("eventName", listenerObject);

下面的代码段使用 this 关键字作为侦听器对象:

function eventName(evtObj:Object){
    // 触发事件时
    // 执行此处的代码
}
componentInstance.addEventListener("eventName", this);

您可以从任何组件实例调用 addEventListener();该方法以"mix-in"的形式添加在每一个源自 EventDispatcher 类的组件中。("mix-in"是一个类,它提供能增强另一个类的行为的特定功能。)有关详细信息,请参阅《ActionScript 2.0 组件语言参考》中的"EventDispatcher.addEventListener()"

有关组件广播的事件的信息,请参阅《ActionScript 2.0 组件语言参考》中该组件的条目。例如,Button 组件事件列在 Button 组件部分(即"帮助">"《ActionScript 2.0 组件语言参考》">"Button 组件">"Button 类">"Button 类的事件摘要")。

若要在 Flash (FLA) 文件中注册侦听器对象,请执行以下操作:

  1. 在 Flash 中,选择"文件">"新建",创建一个新的 Flash 文档。
  2. 将 Button 组件从"组件"面板拖到舞台上。
  3. 在"属性"检查器中,输入实例名称 myButton
  4. 将 TextInput 组件从"组件"面板拖到舞台上。
  5. 在"属性"检查器中,输入实例名称 myText
  6. 在时间轴中选择第 1 帧。
  7. 选择"窗口">"动作"。
  8. 在"动作"面板中输入以下代码:
    var myButton:mx.controls.Button;
    var myText:mx.controls.TextInput;
    
    function click(evt){
        myText.text = evt.target;
    }
    
    myButton.addEventListener("click", this);
    

    事件对象 evttarget 属性是对广播事件的实例的引用。此代码在 TextInput 组件中显示 target 属性的值。

在类 (AS) 文件中注册侦听器对象:

  1. "使用组件"中指定的位置打开文件 TipCalculator.fla。
  2. "使用组件"中指定的位置打开文件 TipCalculator.as。
  3. 在 FLA 文件中选择 form1,在"属性"检查器中查看类名称 TipCalculator。

    这是表单和类文件之间的链接。此应用程序的所有代码都在 TipCalculator.as 文件中。表单的属性和行为默认由分配给该表单的类定义。

  4. 在 AS 文件中,滚动到第 25 行,public function onLoad():Void

    当表单加载到 Flash Player 时,将执行 onLoad() 函数。在函数体内,subtotal TextInput 实例和三个 RadioButton 实例(percentRadio15percentRadio18percentRadio20)调用 addEventListener() 方法向一个事件注册一个侦听器。

  5. 请查看第 27 行,subtotal.addEventListener("change", this)

    调用 addEventListener() 时,必须向其传递两个参数。第一个参数是指示所广播的事件的名称的字符串--在本例中为"change"。第二个参数是对处理事件的对象或函数的引用。在本例中,该参数是引用类文件的一个实例(一个对象)的关键字 this。然后,Flash 会在对象中查找带有该事件名称的函数。

  6. 请查看第 63 行,public function change(event:Object):Void

    这是在 subtotal TextInput 实例发生更改时执行的函数。

  7. 选择 TipCalculator.fla,然后选择"控制">"测试影片"对该文件进行测试。