|
Flash AS2 事件处理机制(2) AS2 中基本的事件处理机制.然后建立强大的事件处理机制.来方便管理自己的程序.下面讲解.
形态多样的事件处理机制(后面会详细的讲解): 1.回调函数.(如 onLoad, onHTTPStatus 等) 2.使用 addListener 方法. (如 onLoadStart, onLoadInit 等) 3.使用 addEventListener 方法. (如 click, change 等)
它们的作用域和形态(代码): 作用域是指标识符(如常量、数据类型、变量或例程)在程序内可被引用的范围. 1.this 指向触发此事件的对象
object.onLoad = function() { trace(this); //输出: object } 2.this 指向侦听器对象
var listenerObject:Object = {}; listenerObject.onLoadStart = function() { trace(this); //输出: listenerObject } broadcasterObject.addListener(listenerObject); 3.使用侦听器对象:this 指向侦听器对象
var listenerObject:Object = {}; listenerObject.click = function(evt:Object) { trace(this); //输出: listenerObject } broadcasterObject.addEventListener("click", listenerObject); 使用函数:this 指向触发此事件的对象
function clickHandler(evt:Object):Void { trace(this); //输出: broadcasterObject } broadcasterObject.addEventListener("click", clickHandler);
有时我们需要更改它们的作用域怎么办? 想要改变它们的作用域,需使用 Delegate 类的 create 方法. 此类的全路径: mx.utils.Delegate; 用法: Delegate.create(要运行函数的范围, 函数); 例: 1.this 指向 _level0
import mx.utile.Delegate; object.onLoad = Delegate.create(this, _onLoad); function _onLoad():Void { trace(this); //输出: _level0 } 2.this 指向 _level0
import mx.utile.Delegate; var listenerObject:Object = {}; listenerObject.onLoadStart = Delegate.create(this, loadStart); function loadStart():Void { trace(this); //输出: _level0 } broadcasterObject.addListener(listenerObject); 3. 使用侦听器对象:this 指向 _level0
import mx.utile.Delegate; var listenerObject:Object = {}; listenerObject.click = Delegate.create(this, clickHandler);
|