|
Flash AS2 事件处理机制(21) } 示例 fla 文档: 打开 EDTimerExample.fla 文档,将"图层 1" 重命名为 Actions.并在第一帧中输入下面的代码:
new EDTimerExample(); 测试 Flash 文档.输出面板会陆续显示以下的内容:
timer: 1 timer: 2 timer: 3 timer: 4 timer: 5 timerComplete 下一节:[6.建立强大的事件处理机制]
[6.建立强大的事件处理机制]
这一节讲建立强大的事件处理机制.学完这节,如果有接触过 AS3 的,马上会想到一句:这不就是 AS3 的事件处理机制吗? 的确.可以说跟 AS3 的事件处理机制一模一样.但还是有个作用域的问题.这节对想学习 AS3 的事件处理机制会有很大 帮助.如果你掌握这节中的内容,在 AS3 中就只有语法问题.也就会很快进入状态.毕竟是"水往低处流,人往高处走".对现 在用 AS2 的,学 AS3 是迟早的问题.不过 AS2 在新版本出来之前还是会很有用的(个人的看法).
作用域因为一样,前面也讲过,这里就不在啰嗦. 事件对象.这里已经创建一个 Event 类(或其子类)来代替.但功能一样.
这节讲的事件处理机制的形态(代码). 发送事件:
//继承. import AS2.events.Event; import AS2.events.CFEventDispatcher; class className extends CFEventDispatcher { ... this.dispatchEvent(new Event(Event.COMPLETE)); ... } 或
//不继承. import AS2.events.Event; import AS2.events.CFEventDispatcher; class className { public var addEventListener:Function; public var removeEventListener:Function; private var dispatchEvent:Function; public function className() { //此方法要在使用 dispatchEvent 方法前被执行.一般放于构造函数中. CFEventDispatcher.initialize(this); } ... this.dispatchEvent(new Event(Event.COMPLETE)); ... } 侦听事件:
//使用自定义函数. import AS2.events.Event; import className; ... var cn:className = new className(); //自定义函数. function completeHandler(evt:Event):Void { trace(this); //输出: _level0.cn } cn.addEventListener(Event.COMPLETE, completeHandler);
|