Files

80 lines
1.9 KiB
JavaScript
Raw Permalink Normal View History

2026-05-23 22:10:14 +08:00
/*-----------------------------------------------------+
* 事件模块
*
+-----------------------------------------------------*/
// 事件功能基类
var BaseEvent = cc.Class( {
ctor: function() {
this._evt_idx = 0;
this._evt_list = {};
},
bind: function( 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( 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( 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(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;