atitit.事件驱动的总结attilax

Keyboard 基于的的ed 与  mouse 基础的ed

Kb  base on focus ....   Mouse base on mouse move...

游戏开发中一个很重要的功能就是交互,如果没有与用户的交互,那么游戏将变成动画,而处理用户交互就需要使用事件监听器了。

总概:

· 事件监听器(cc.EventListener) 封装用户的事件处理逻辑

· 事件管理器(cc.eventManager) 管理用户注册的事件监听器,根据触发的事件类型分发给相应的事件监听器

· 事件对象(cc.Event) 包含事件相关信息的对象

如何使用呢? 首先需要创建一个事件监听器,事件监听器包含以下几种类型:

· 触摸事件监听器 (cc.EventListenerTouch)

· 键盘事件监听器 (cc.EventListenerKeyboard)

· 加速计事件监听器 (cc.EventListenerAcceleration)

· 鼠标事件监听器 (cc.EventListenerMouse)

· 自定义事件监听器 (cc.EventListenerCustom)

在监听器中实现各种事件的处理逻辑,然后将监听器加入到事件管理器中, 当事件触发时,事件管理器会根据事件类型分发给相应的事件监听器。下面以一个简单的示例来演示使用的方法。

##基础知识

###事件 Cocos2d-JS v3.x中事件分发机制进行了重写,事件可以与任意对象绑定,而不是只有Layer才能获取。对象创建自己的事件监听器,然后加入到全局的事件管理器统一管理。

事件监听器有以下几种:

· 触摸事件

· 键盘响应事件

· 鼠标响应事件

· 自定义事件

· 加速计事件

addTouchEventListenser:function(){

this.touchListener = cc.EventListener.create({

event: cc.EventListener.TOUCH_ONE_BY_ONE,

// When "swallow touches" is true, then returning ‘true‘ from the onTouchBegan method will "swallow" the touch event, preventing other listeners from using it.

swallowTouches: true,

//onTouchBegan event callback function                      

onTouchBegan: function (touch, event) {

var pos = touch.getLocation();

var target = event.getCurrentTarget();

if ( cc.rectContainsPoint(target.getBoundingBox(),pos)) {

cc.log("touched")

return true;

}

return false;

}

cc.eventManager.addListener(this.touchListener,this);

});

上面的代码,首先通过使用cc.EventListener.create创建了一个Touch事件监听器touchListener,然后,通过cc.eventManager.addListener注册监听器到事件管理器。cc.EventListener.create扩展出一个用户监听器。event属性,定义这个监听器监听的类型。swallowTouches属性设置是否吃掉事件,事件被吃掉后不会递给下一层监听器。 onTouchBegan方法处理触摸点击按下事件,我们在这里可以获取到触摸点的坐标pos。event.getCurrentTarget()获取当前事件的接受者,并判断当前的是否点击到了SushiSprite。 在touch事件中,我们还可以添加onTouchMoved/onTouchEnded方法监听touch移动和结束的回调。如果onTouchBegan返回false后onTouchMoved/onTouchEnded不会执行。

在onTouchBegan方法中获取点击点的坐标pos,然后通过cc.rectContainsPoint(target.getBoundingBox(),pos)判断点击的点是否在SushiSprite上

鼠标响应事件 vs 触摸事件

对于PC和超级本,添加鼠标事件的的处理,可以加强用户的体验,其处理逻辑与触摸事件基本一样,多了一些鼠标特有的事件响应,如滚轮事件(onMouseScroll).

模式对话框的实现原理 暂停/恢复 与场景相关(SceneGraph类型)的监听器

开发过程中,我们经常会遇到这样的情况:想要让一个Layer中所有的Node对象的事件都停止响应。 在响应用户事件后,又要恢复该Layer的所有事件响应。如: 用户想要显示一个模式对话框,显示对话框后,禁止对话框后所有对象的事件响应。 在用户关闭对话框后,又恢复这些对象的事件响应。

我们只需要暂停根node的事件,就可以让根节点以及其子节点暂停事件响应。 代码如下:

cc.eventManager.pauseTarget(aLayer, true);                        //让aLayer对象暂停响应事件

而恢复对象的事件响应也非常简单:

cc.eventManager.resumeTarget(aLayer, true);                        //让aLayer对象恢复响应事件

注意: 第二个参数为可选参数,默认值为false, 表示是否递归调用子节点的暂停/恢复操作.

3.6 使用事件管理器创建用户交互.html

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )

汉字名:艾提拉(艾龙),   EMAIL:[email protected]

转载请注明来源: http://www.cnblogs.com/attilax/

atiend

时间: 2024-10-20 23:19:24

atitit.事件驱动的总结attilax的相关文章

Atitit.文件搜索工具 attilax 总结

Atitit.文件搜索工具 attilax 总结 1. 指定目录按照体积大小精确搜索1 1.1. File Seeker 4.5 版本的可以,3.5版本的不行..1 2. 按照文件内容搜索1 2.1. File Seeker2 2.2. Notepad++2 2.3. FileLocator Pro 是一款专业的文件搜索软件,2 2.4. 百度硬盘搜索3 3. 在的3 1. 指定目录按照体积大小精确搜索 1.1. File Seeker 4.5 版本的可以,3.5版本的不行.. 2. 按照文件内

Atitit.rust语言特性 attilax 总结

Atitit.rust语言特性 attilax 总结 1. 创建这个新语言的目的是为了解决一个顽疾:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升.1 2. 不会出现Null指针等等1 2.1.1. Rust 1.1 稳定版 更新内容1 2.1.2. Rust 1.2 测试版 更新内容2 3. RAII2 3.1. 无数据竞争(Data Race)…无需竞争的并发,Rust能够确保在并发编程中的数据安全3 4. 是基于继承的组合,Rust能基于继承实现组合,

atitit.项目设计模式---ioc attilax总结v4 q11

atitit.项目设计模式---ioc attilax总结v4 q11 1. ioc的原理1 1.1. .IOC的之前1 1.2. ioc后的实现2 1.3. ioc的演化2 1.4. 依赖注入和控制反转是同一概念吗?3 2. IoC的实现模式di 与 service loctor4 3. Ioc实现的三种模式:构造函数注入,属性注入(推荐),接口注入4 3.1. 容器的依赖注入...注入容器(推荐)4 3.2. Atitit.ioc容器的设计 lazy加载模式.doc4 4. 认识引入IOC框

atitit.项目设计模式---ioc attilax总结

atitit.项目设计模式---ioc attilax总结 1. .IOC的之前 1 2. ioc后的实现 1 3. 认识引入IOC框架的缺点, 2 4. 自己实现ioc 3 4.1. ioc框架的实现原理map+容器法 3 4.2. 每个组件set法 3 4.3. 一种实用和优雅的来解决这些问题,是使用容器的依赖注入 3 4.4. 使用 vm 注入,隐藏注入,golbal 变量.. 4 5. php 与java的ioc框架实现的异同 4 6. Phalcon 的问题 4 7. 注入 Larav

Atitit 架构的原则attilax总结

1.1. Rule of three称为"三次原则",指的是当某个功能第三次出现时,才进行"抽象化".是DRY原则和YAGNI原则的折中1 1.2. 面向人类编程(可读性优先),优先于面向机器(性能)1 1.3. 归一化原则,一切都是文件,一切都是sprite1 1.4. 高层抽象原则,优先于具体实现,框架 类库优先于自己实现1 1.5. 移动小屏幕优先原则2 1.6. 点击触摸 优先于键盘 遥控操作2 1.7. 适当超前设计,超前抽象一层即可2 1.8. 超前架构

atitit.web原理 理论attilax总结

1. Web3.01 2. Web的未来趋势1 3. Web语言与应用导论_百度百科.html2 4. <Web设计与编程导论(影印版)>((美)王(Wang...)[简介_书评_在线阅读] -.html4 5. <Web技术导论(第3版)(21世纪高等学校规划教材·计算机应用)>(郝兴伟...)[简介_书评_在线阅读] -.html5 6. <Web程序设计(第8版)(国外计算机科学经典教材)>((美)塞巴斯塔(Sebesta,...)[简介_书评_在线阅读] -.h

Atitit 作用域的理解attilax总结

1.1. 作用域是指对某一变量和方法具有访问权限的代码空间, 1 1.2. 作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突.1 1.3. 变量的作用域无非就是两种:全局变量和局部变量, 1 1.4.  this关键字的取值取决于你在哪里调用它(Dynamic Scoping).1 1.5. 作用域链 可以被看作一种路径, 沿着这条路径可以确定变量的值 作用域链(Scope Chain)2 1.6. 2 1.6.1. 改变作用域链3 2.  块级作用域3 1.1. 作用域是指对

Atitit.信息论原理概论attilax总结

1. <信息论基础(原书第2版)>((美)科弗(Cover...)[简介_书评_在线阅读] - 当当图书.html1 2. <信息论——本质·多样性·统一>((美)布尔金...)[简介_书评_在线阅读] - 当当图书.html2 3. 附录  信息论的数学基础   附录A 集合论基础   附录B 算法论要义   附录C 逻辑学要义   附录D 代数与范畴论要义   附录E 概率论要义   附录F 数字与数值函数   附录G 拓扑.度量和赋范空间2 4. 网络信息论3 1. <

atitit.身份认证解决方案attilax总结

1.1. 身份认证1 1.2.  basic认证1 1.2.1. 编程实现basic客户端2 1.3. digest认证机制3 1.4. SSL认证3 1.5. FormBase认证,也就是表单认证3 This is a premature infants from China, 100 days, and had liver failure, cholestasis and other diseases, at present in Shanghai treatment, but need t