GlobalEvent.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //全局事件处理 分发和监听 相当于一个全局观察者
  2. //这个事件分发处理机制 没有针对每个绑定个体的
  3. cc.director.GlobalEvent = {
  4. handles_: {},
  5. //发送事件 事件分发
  6. emit: function (eventName, data) {
  7. var returns = [] //返回值
  8. //console.log('事件分发', eventName);
  9. data.eventName = eventName//保存一下事件名字
  10. for ( var findEvenName in this.handles_ ){
  11. if (findEvenName == eventName) {
  12. for (var i = 0; i < this.handles_[findEvenName].length; i++) {
  13. if (this.handles_[findEvenName][i])
  14. {
  15. var returnValue = this.handles_[findEvenName][i](data)
  16. returns.push(returnValue)
  17. }
  18. }
  19. }
  20. }
  21. return returns
  22. },
  23. //添加普通事件 监听
  24. on: function (eventName, callback, target) {
  25. //console.log('完成事件注册监听', eventName);
  26. this.handles_[eventName] = this.handles_[eventName] || []
  27. this.handles_[eventName].push(callback.bind(target))
  28. },
  29. //通过事件名和target移除一种事件监听
  30. off: function (eventName) {
  31. if (!this.handles_[eventName])
  32. return;
  33. for (var i = 0; i < this.handles_[eventName].length; i++) {
  34. this.handles_[eventName][i] = null
  35. }
  36. },
  37. //一次性清空所有数据
  38. clear: function(){
  39. for ( var findEvenName in this.handles_ ){
  40. for (var i = 0; i < this.handles_[findEvenName].length; i++) {
  41. this.handles_[findEvenName][i] = null;
  42. }
  43. }
  44. },
  45. }