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