80 lines
1.9 KiB
JavaScript
80 lines
1.9 KiB
JavaScript
|
|
/*-----------------------------------------------------+
|
||
|
|
* 事件模块
|
||
|
|
*
|
||
|
|
+-----------------------------------------------------*/
|
||
|
|
|
||
|
|
// 事件功能基类
|
||
|
|
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;
|
||
|
|
|