在很多图形用户技术中,事件处理机制一般都有三个重要的角色:事件、事件源和事件处理者。事件源是事件发生的场所,通常就是各个视图或控件,事件处理者是接收事件并对其进行处理的一段程序。
事件处理机制中三个角色
在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

智捷课堂现推出Cocos会员,敬请关注:http://v.51work6.com/courseInfoRedirect.do?action=netDetialInfo&courseId=844465&categoryId=0

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

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

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

转载于:https://www.cnblogs.com/iOS-Blog/p/4381121.html

Cocos2d-JS事件处理机制相关推荐

  1. JS的事件处理机制以及事件代理(事件委托)

    一.先记个小知识点.cssText cssText 本质:设置 HTML 元素的 style 属性值. 用法:document.getElementById("d1").style ...

  2. 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理

    最近发现有不少介绍JS单线程运行机制的文章,但是发现很多都仅仅是介绍某一部分的知识,而且各个地方的说法还不统一,容易造成困惑. 因此准备梳理这块知识点,结合已有的认知,基于网上的大量参考资料,从浏览器 ...

  3. click事件在什么时候出发_超全的js事件机制amp;事件委托

    超全的js事件机制&事件委托,想要理解js事件只需认真看完此篇即可~ 目录结构: 什么是事件机制 事件冒泡事件捕获 DOM事件流事件委托 误区 在同一个对象上注册事件,并不一定按照注册顺序执行 ...

  4. 事件处理机制--浏览器流程处理分析

    事件处理机制--浏览器流程处理分析 js的运行是单线程的,单线程即一个时间只能做一件事.浏览器的运行是多线程的. 如下三种情况会进入事件队列(任务队列)中,但不立即执行: 1.定时函数 2.事件函数 ...

  5. js中当等于最小值是让代码不执行_从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理...

    前言 见解有限,如有描述不当之处,请帮忙及时指出,如有错误,会及时修正. ----------超长文+多图预警,需要花费不少时间.---------- 如果看完本文后,还对进程线程傻傻分不清,不清楚浏 ...

  6. web前端培训JS 运行机制的梳理

    展现形式:由于是属于系统梳理型,就没有由浅入深了,而是从头到尾的梳理知识体系, 重点是将关键节点的知识点串联起来,而不是仅仅剖析某一部分知识. 内容是:从浏览器进程,再到浏览器内核运行,再到JS引擎单 ...

  7. php 事件,php的事件处理机制(回调函数)

    起因 js有个事件处理机制,当事件被触发时,调用设置的回调函数. 比如说 $("#div").on('click',function(){ // 代码段 }); 那么身为世界上最好 ...

  8. JS 运行机制最全面的一次梳理

    前端Q 我是winty,专注分享前端知识和各类前端资源,乐于分享各种有趣的事,关注我,一起做个有趣的人- 公众号 点击上方 前端Q,关注公众号 回复加群,加入前端Q技术交流群 最近发现有不少介绍JS单 ...

  9. JavaScript 事件模型 事件处理机制

    这篇文章对于了解Javascript的事件处理机制非常好,将它全文转载于此,以备不时之需. 什么是事件? 事件(Event)是JavaScript应用跳动的心脏 ,也是把所有东西粘在一起的胶水.当我们 ...

最新文章

  1. 高通创投在中国区的投资重点,目前主要聚焦在AI+5G、XR+5G、机器人/自动驾驶+5G、物联网+5G四个方面。
  2. 基于多特征地图和深度学习的实时交通场景分割
  3. go chapter 8 - 初始化对象
  4. LeetCode59 Spiral Matrix II
  5. Trie的C++实现及HDU1251,hdu1671
  6. eclipse中LogCat有时不显示信息的简单解决办法
  7. 极大似然估计的直观解释-转
  8. cocos2dx游戏--欢欢英雄传说--添加攻击按钮
  9. 内部类可以引用它的包含类的成员吗?有没有什么限制?
  10. VirtualBox桥接网络的简单配置,让虚拟机直接访问网络
  11. 又烧一辆!蔚来ES8维修时起火烧到只剩底盘 官方回应:已开启调查
  12. Mysql学习总结(65)——项目实战中常用SQL实践总结
  13. 神奇的go语言(面向对象)
  14. .NET程序中常用的28种代码
  15. nagios 监控slave(check_mysql_health插件)
  16. 地形瓦片地图TiledMap AutoTiles自动图块
  17. linux下查看计划任务,linux查看计划任务.docx
  18. java 浮点型_java 基础 浮点类型
  19. 阿里云视频点播一站式解决解决方案怎么样?
  20. WordPress插件:WP No Category Base 去除分类Category目录

热门文章

  1. 关于购买企业邮箱,谨防陷入几大误区
  2. Cannot start compilation:the output path is not specifired for module “xxx“.Specify the output path
  3. ubuntu19.10安装remarkable
  4. Understanding Clouds from Satellite Images语义分割比赛中train_test_split与stratify配合使用
  5. ubuntu64位(x86)下科大讯飞sdk使用注意事项
  6. 大话数据结构:平衡二叉排序树
  7. android下raw目录的作用,【android】读取/res/raw目录下的文件
  8. python设置全局变量失败_Python全局变量与global关键字常见错误解决方案
  9. php服务docker化,docker化你的PHP应用环境Nginx PHP-FPM
  10. 忽如一夜冬风来,团队忽然就解散了