使用 ActionScript 2.0 组件 |
|
|
|
| 处理组件事件 > 使用侦听器处理事件 > 使用侦听器对象 | |||
要使用侦听器对象,您可以使用 this 关键字指定当前对象作为侦听器、使用应用程序中已有的对象或创建一个新对象。
this。
通常,使用当前对象 (this) 作为侦听器最容易,因为其范围包含广播事件时需要做出响应的组件。
例如,在一个 Flash 表单应用程序中,如果表单包含对事件做出响应的组件,则可能需要使用该表单作为侦听器对象。请将代码置于表单的时间轴的某一帧上。
click 事件)并且您仅希望某些侦听器对象做出响应,则请使用一个新的侦听器对象。如果使用 this 对象,请使用与要处理的事件相同的名称定义一个函数;语法如下:
functioneventName(evtObj:Object){ //此处是您的代码};
如果要使用一个新的侦听器对象,则必须创建该对象,定义一个与事件同名的属性,然后将该属性分配给在广播事件时执行的回调函数,如下所示:
varlistenerObject:Object = new Object();listenerObject.eventName= function(evtObj:Object){// 此处是您的代码};
如果要使用现有对象,请使用与新侦听器对象相同的语法,但不创建新对象,如下所示:
existingObject.eventName= function(evtObj:Object){// 此处是您的代码};
|
提示 |
|
最后,从广播事件的组件实例调用 addEventListener() 方法。addEventListener() 方法采用两个参数:一个是指示事件名称的字符串,另一个是对侦听器对象的引用。
componentInstance.addEventListener("eventName",listenerObject);
以下是整个代码段,您可以复制并粘贴它。请确保用实际值替换所有斜体代码;您可以使用 listenerObject 和 evtObj 或任何其它合法标识符,但必须将 eventName 更改为事件的名称。
varlistenerObject:Object = new Object();listenerObject.eventName= function(evtObj:Object){// 触发事件时// 执行此处的代码};componentInstance.addEventListener("eventName",listenerObject);
下面的代码段使用 this 关键字作为侦听器对象:
functioneventName(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) 文件中注册侦听器对象,请执行以下操作:
var myButton:mx.controls.Button;
var myText:mx.controls.TextInput;
function click(evt){
myText.text = evt.target;
}
myButton.addEventListener("click", this);
事件对象 evt 的 target 属性是对广播事件的实例的引用。此代码在 TextInput 组件中显示 target 属性的值。
在类 (AS) 文件中注册侦听器对象:这是表单和类文件之间的链接。此应用程序的所有代码都在 TipCalculator.as 文件中。表单的属性和行为默认由分配给该表单的类定义。
public function onLoad():Void。
当表单加载到 Flash Player 时,将执行 onLoad() 函数。在函数体内,subtotal TextInput 实例和三个 RadioButton 实例(percentRadio15、percentRadio18 和 percentRadio20)调用 addEventListener() 方法向一个事件注册一个侦听器。
subtotal.addEventListener("change", this)。
调用 addEventListener() 时,必须向其传递两个参数。第一个参数是指示所广播的事件的名称的字符串--在本例中为"change"。第二个参数是对处理事件的对象或函数的引用。在本例中,该参数是引用类文件的一个实例(一个对象)的关键字 this。然后,Flash 会在对象中查找带有该事件名称的函数。
public function change(event:Object):Void。
这是在 subtotal TextInput 实例发生更改时执行的函数。
|
|
|
|