全局的消息事件 let getTypeObj = function(type) { let types = []; if(type) { if(typeof(type) === 'string') { types.push(type); } else if(typeof(type) === 'object') { types = type; } else { return undefined; } return types; } else { re
let getTypeObj = function(type) { let types = []; if(type) { if(typeof(type) === 'string') { types.push(type); } else if(typeof(type) === 'object') { types = type; } else { return undefined; } return types; } else { return undefined; } }; let Notification = { eventMap:[], on: function(type, callback, target) { let types = getTypeObj(type); if(!types) { return; } cc.log('types Array:'+JSON.stringify(types)); for(let k in types) { let v = types[k]; if(typeof(v) === 'string') { if (this.eventMap[type] === undefined) { this.eventMap[type] = []; } this.eventMap[type].push({ callback: callback, target: target }); } else { throw Error("Notification type error."); } } return {type: type, callback: callback}; }, emit: function(type, parameter) { let array = this.eventMap[type]; if (array === undefined) return; for (let i = 0; i < array.length; i++) { let element = array[i]; if (element) element.callback.call(element.target, parameter); } }, off: function(type, callback) { let array = this.eventMap[type]; if (array === undefined) return; for (let i = 0; i < array.length; i++) { let element = array[i]; if (element && element.callback === callback) { array.splice(i, 1); break; } } }, offType: function(type) { this.eventMap[type] = undefined; }, offId: function(id) { if(id && id.type && id.callback) { let types = getTypeObj(id.type); if(!types) { return; } for(let k in types) { let v = types[k]; if(typeof(v) === 'string') { this.off(v, id.callback); } else { throw Error("Notification type error."); } } } } }; module.exports = Notification;