75 lines
1.8 KiB
JavaScript
75 lines
1.8 KiB
JavaScript
|
|
"use strict";
|
||
|
|
cc._RF.push(module, 'e53589A1RNGZ4q113o6OUEB', 'eventor');
|
||
|
|
// Scripts/client/base/eventor.js
|
||
|
|
|
||
|
|
"use strict";
|
||
|
|
|
||
|
|
/*-----------------------------------------------------+
|
||
|
|
* 事件模块
|
||
|
|
*
|
||
|
|
+-----------------------------------------------------*/
|
||
|
|
|
||
|
|
// 事件功能基类
|
||
|
|
var BaseEvent = cc.Class({
|
||
|
|
ctor: function ctor() {
|
||
|
|
this._evt_idx = 0;
|
||
|
|
this._evt_list = {};
|
||
|
|
},
|
||
|
|
bind: function bind(evt_label, func, obj) {
|
||
|
|
if (!evt_label) {
|
||
|
|
// cc.log( "evt_label===null" );
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (!func) {
|
||
|
|
// cc.log( "evt_func===null" );
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (!this._evt_list.hasOwnProperty(evt_label)) {
|
||
|
|
this._evt_list[evt_label] = {};
|
||
|
|
}
|
||
|
|
var evt_id = this._evt_idx++;
|
||
|
|
this._evt_list[evt_label][evt_id] = {
|
||
|
|
f: func,
|
||
|
|
o: obj
|
||
|
|
};
|
||
|
|
return {
|
||
|
|
evt: evt_label,
|
||
|
|
id: evt_id
|
||
|
|
};
|
||
|
|
},
|
||
|
|
unbind: function unbind(evt) {
|
||
|
|
if (this._evt_list.hasOwnProperty(evt.evt)) {
|
||
|
|
delete this._evt_list[evt.evt][evt.id];
|
||
|
|
if (Object.keys(this._evt_list[evt.evt]).length == 0) {
|
||
|
|
delete this._evt_list[evt.evt];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
fire: function fire(evt_label) {
|
||
|
|
if (!this._evt_list.hasOwnProperty(evt_label)) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
var list = this._evt_list[evt_label];
|
||
|
|
var args = Array.prototype.slice.apply(arguments);
|
||
|
|
args.shift();
|
||
|
|
for (var key in list) {
|
||
|
|
list[key].f.apply(list[key].o, args);
|
||
|
|
}
|
||
|
|
},
|
||
|
|
fire_x: function fire_x(self, evt_label) {
|
||
|
|
if (!self._evt_list.hasOwnProperty(evt_label)) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
var list = self._evt_list[evt_label];
|
||
|
|
var args = Array.prototype.slice.apply(arguments);
|
||
|
|
args.shift();
|
||
|
|
for (var key in list) {
|
||
|
|
list[key].f.apply(list[key].o, args);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
// 基类导出
|
||
|
|
module.exports = BaseEvent;
|
||
|
|
|
||
|
|
cc._RF.pop();
|