在很多图形用户技术中,事件处理机制一般都有三个重要的角色:事件、事件源和事件处理者。事件源是事件发生的场所,通常就是各个视图或控件,事件处理者是接收事件并对其进行处理的一段程序。
事件处理机制中三个角色
在Cocos2d-JS引擎事件处理机制中也有这三个角色。
1、事件
事件类是cc.Event,它的类图如下图所示,它的子类有:cc.EventTouch(触摸事件)、cc.EventMouse(鼠标事件)、cc.EventCustom(自定义)、cc.EventKeyboard(键盘事件)和cc.EventAcceleration(加速度事件)。

事件类图

2、事件源
事件源是Cocos2d-JS中的精灵、层 、菜单等节点对象。

3、事件处理者
Cocos2d-JS中的事件处理者是事件监听器类cc.EventListener ,它包括几种不同类型的监听器:
cc.EventListener.ACCELERATION。加速度事件监听器。
cc.EventListener.CUSTOM。自定义事件监听器。
cc.EventListener.KEYBOARD。键盘事件监听器。
cc.EventListener.MOUSE。鼠标事件监听器。
cc.EventListener.TOUCH_ALL_AT_ONCE。多点触摸事件监听器。
cc.EventListener.TOUCH_ONE_BY_ONE。单点触摸事件监听器。

事件管理器
从命名上可以看出事件监听器与事件具有对应关系,例如:键盘事件(cc.EventKeyboard)只能由键盘事件监听器(cc.EventListener.KEYBOARD)处理,它们之间需要在程序中建立关系,这种关系的建立过程被称为“注册监听器”。Cocos2d-JS提供一个事件管理器 cc.EventManager负责管理这种关系,具体说事件管理器负责:注册监听器、注销监听器和事件分发。
cc.EventManager类中添加事件监听器的函数如下:
addListener(listener, nodeOrPriority)
第一个参数listener是要添加的事件监听器对象,第二个参数nodeOrPriority,可以是是一个Node对象或是一个数值。如果传入的是Node对象,则按照精灵等Node对象的显示优先级作为事件优先级,如下图所示的实例精灵BoxC优先级是最高的,按照精灵显示的顺序BoxC在最前面。如果传入的是数值,则按照指定的级别作为事件优先级,事件优先级决定事件响应的优先级别,值越小优先级越高。

精灵显示优先级作为事件优先级

当不在进行事件响应的时候,我们应该注销事件监听器,主要的注销函数如下:
removeListener(listener)。注销指定的事件监听器。
removeCustomListeners(customEventName)。注销自定义事件监听器。
removeListeners(listenerType, recursive)。注销所有特点类型的事件监听器,recursive参数是否递归注销。

removeAllEventListeners()。注销所有事件监听器,需要注意的是使用该函数之后,菜单也不能响应事件了,因为它也需要接受触摸事件。

更多内容请关注最新Cocos图书《Cocos2d-x实战:JS卷——Cocos2d-JS开发》

本书交流讨论网站:http://www.cocoagame.net

欢迎加入Cocos2d-x技术讨论群:257760386

更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com

《Cocos2d-x实战 JS卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11659698.html

欢迎关注智捷iOS课堂微信公共平台,了解最新技术文章、图书、教程信息

最新文章

  1. SQLServer如何添加try catch
  2. MS - 2 - 设计包含 min 函数的栈
  3. SQL Server 2008 r2 中 SQL语句提示“对象名无效”,但可执行
  4. Android课程---表格布局TableLayout
  5. du -sg 和df -g 所看的文件系统大小不一致
  6. SpringMVC——类型转换和格式化、数据校验、客户端显示错误消息
  7. ubuntu12.10升级至14.04
  8. .Net设计模式_开篇
  9. UVA 10790 How Many Points of Intersection?
  10. JUnit4在Eclipse中的使用
  11. UVALive 4490 Help Bubu
  12. How to kill a particular user terminal on Linux
  13. eclipse代码自动补全。
  14. STM32CubeMX+Keil裸机代码风格(2)
  15. DOSBOX的安装和使用(window10 64位)
  16. centos----------centos下如何安装phpstorm
  17. JS图形化插件利器组件系列 —— Gojs组件
  18. golang 安装一个项目下的所有依赖
  19. Java基础-数组常见排序方式
  20. js的拼接

热门文章

  1. SQL自增长的数据插入
  2. 【JavsScript】作用域链
  3. [Angular 2] Set Properties on Dynamically Created Angular 2 Components
  4. cocos2d-x 2.2 移植wp8遇到的坑
  5. python中的reduce(转)
  6. Use Spring Insight Developer to Analyze Code, Install it with Tomcat, and Extend it with Plugins--转载
  7. spring security源码分析之一springSecurityFilterChain
  8. 想了解JAVA的,看看(转载)
  9. magic_quotes_gpc(魔术引号开关)
  10. 琐碎-关于Windows调试hadoop