📄 cfeventdispatcher.as
字号:
//----------------------------------------
/*
@Description: 提供广播事件和侦听器管理功能.原类:mx.events.EventDispatcher
@usage:
@example:
//
import AS2.events.CFEventDispatcher;
1:继承
class yourClassName extends CFEventDispatcher
{
...
this.dispatchEvent(事件对象);
...
}
//
2:不继承
class yourClassName
{
public var addEventListener:Function;
public var removeEventListener:Function;
public var dispatchEvent:Function;
public function yourClassName()
{
CFEventDispatcher.initialize(this);
}
...
this.dispatchEvent(事件对象);
...
}
//
@author: ChooseFlash 修改
@date: 2007-07-07
*/
//----------------------------------------
class AS2.events.CFEventDispatcher
{
//----------------------------------------
public function CFEventDispatcher(){}
//----------------------------------------
private static var _ed:CFEventDispatcher;
//----------------------------------------
private static function _removeEventListener(queue:Object, handler):Void
{
if (queue != undefined) {
var l:Number = queue.length;
while(l--){
if(queue[l] == handler){
queue.splice(l, 1);
return;
}
}
}
}
public static function initialize(o:Object):Void
{
if (_ed == undefined) {
_ed = new CFEventDispatcher();
}
o.addEventListener = _ed.addEventListener;
o.removeEventListener = _ed.removeEventListener;
o.dispatchEvent = _ed.dispatchEvent;
o.dispatchQueue = _ed.dispatchQueue;
}
//----------------------------------------
private function dispatchQueue(queueObj:Object, eventObj:Object):Void
{
if (queueObj[eventObj.type] != undefined) {
for (var i:String in queueObj[eventObj.type]) {
var o = queueObj[eventObj.type][i];
if (typeof (o) == "object" || typeof (o) == "movieclip") {
//调用对象中的handleEvent函数.
//if (o.handleEvent != undefined) {
//o.handleEvent(eventObj);
//}
//调用对象中的事件同名函数.
//if (o[eventObj.type] != undefined) {
o[eventObj.type](eventObj);
//}
} else {
//调用自定义函数.
o.apply(queueObj, [eventObj]);
}
}
}
}
public function dispatchEvent(eventObj:Object):Void
{
//将事件源始终指向this(应用此类的对象).
eventObj.target = this;
//此句对动态类,或在类中定义"事件名Handler" 这样的函数时才有效.
/*
用法: 对象.事件名Handler = function(evt:Object){};
*/
//this[eventObj.type + "Handler"](eventObj);
this.dispatchQueue(this, eventObj);
}
public function addEventListener(event:String, handler):Void
{
if (this[event] == undefined) {
this[event] = [];
}
//ASSetPropFlags是隐藏的方法.
//_global.ASSetPropFlags(this, event, 1);
CFEventDispatcher._removeEventListener(this[event], handler);
this[event].push(handler);
}
public function removeEventListener(event:String, handler):Void
{
CFEventDispatcher._removeEventListener(this[event], handler);
}
//----------------------------------------
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -