`

Cocos2D 的事件处理机制

 
阅读更多

摘自:知易教程

 

    系统当前场景对象包含多个层对象,每个层对象都可以按照一定的 规则接叐系统的消息输入,并对乊形成反馈。读者可以在上述总体框架之下,定义自己的消 息处理逻辑作为新的 TouchHandler,定义新的 Layer 的派生类实现消息的处理。

 

 

至此,我们可以给 Cocos2d-iPhone 关亍事件处理的源代码迚行一个主体描述:

 

1、CCTouchDelegateProtocol.h 定义了 2 种处理模式的接口协议:标准型、目标型。

2、CCTouchDispatcher 通过单例对象,接管了 iPhoneOS 传递过来所有触摸输入。

      并将输入在所有注册的 Layer(戒者 CCNode,及其派生类)对象之间分収输入。

3、 CCTouchHandler 按照目标、标准两种模式将注册处理输入的 Layer(戒者 CCNode,及其派生类,如 CCSprite)统一管理起来,形成各种处理细节的统一化,方便 CCTouchDispatcher 统一处理。

 

 

笔者感觉 Cocos2d-iPhone 的作者对亍上述的规划丌算完美,层层代理处理调用复杂,

灵活性却丌够,如果我们的应用要实现新的 XXXTouchHandle 逻辑,就要定义新的 @protocol XXXXTouchDelegate <NSObject> 协议,我们将如下修改 Layer 类的定义:

 

@interface Layer : CocosNode <UIAccelerometerDelegate,
StandardTouchDelegate, TargetedTouchDelegate, XXXXTouchDelegate >
 {
    BOOL isTouchEnabled;
    BOOL isAccelerometerEnabled;
}

     实际上,每为 Layer 增加一种新的输入处理模式(新协议),都会导致类 Layer 的重新 定义,因此这意味着 Layer 对新的操作处理模式是没有关闭的。

 

 

    细心的读者也许会就上面的图示提出异议,为什么新的 User Specific 协议会针对 CocosNode 类的派生对象,我们丌是一直都在针对 Layer 谈输入控制么?难道要允许一个 精灵(Sprite 戒者 AlasSprite)乊际包含针对它的输入控制么?

    答案是肯定的,实际上我们看到:仸意屏幕对象需要处理鼠标输入都可以:

    1)实现协议 TargetedTouchDelegate 戒者 StandardTouchDelegate:

    2)在吅适的时机将自己注册到输入处理流程中:

 

[[TouchDispatcher	sharedDispatcher]	addStandardDelegate:self priority:0];

     3)处理触摸事件,实现本精灵的特别控制效果。

分享到:
评论

相关推荐

    cocos2d-x事件类

    谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类,还需要实现handleEvent方法 事件发送者和事件接收者要在构造函数和析构函数中调用一下方法 事件发送者...

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    cocos2d入门cocos2d入门

    cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门

    cocos2d-x json字符串与cocos2d::Value转换工具

    该资源主要用于cocos2d-x中Value与json字符串的相互转换,提供从json文件读取为cocos2d::Value,cocos2d::Value写入到文件,cocos2d::Value转换为json字符串,json字符串转换为cocos2d::Value。json字符串转换成cocos...

    cocos2d-x-2.1.5

    cocos2d-x-2.1.5

    Cocos2D权威指南

    第1章 开始前的准备工作 1 第2章 你的第一款iPhone游戏:垂直射击游戏 38 第3章 Cocos2D核心类 69 第4章 Cocos2D中的动作、特效与动画 152 第5章 Cocos2D中的文本渲染系统 229 共19章

    cocos2d-x游戏代码

    cocos2d-x游戏代码

    cocos2d初级教程-Cocos2d SimpleGame源码

    Ray Wenderlich的《Cocos2d SimpleGame》,被认为是cocos2d的初学者最好的教程,这本书被Cocos2D-X团队从objective-c转化到了c++版,并发布在了github上。在此感谢Ray Wenderlich的慷慨相助。 源代码是在cocos2d-x ...

    Cocos2d-x实战 JS卷 Cocos2d-JS开发

    Cocos2d-x实战 JS卷 Cocos2d-JS开发 PDF 电子书完整版本

    菜鸟学习Cocos2d-x 3.x——浅谈事件处理机制.pdf

    Cocos2d-x v3.x中,对于事件的处理已经与Cocos2d-x v2.x中有天壤之别,本文讲述了3x的事件处理方式。

    Cocos2d-x高级开发教程

    Cocos2d-x是移动跨平台开发最流行的游戏引擎,而本书是一本很全面的、比较‘接地气’的游戏开发教程。书中汇聚了热门手机游戏《捕鱼达人》开发的实战经验,作者从最基础的内容开始,逐步深入地介绍了Cocos2d-x的相关...

    cocos2d-android jar包全套.zip

    如果你想用cocos2d开发android游戏,但是又不方便找包,这里就可以为你提供cocos2d开发的所有相关包,解压后得到libs文件夹即可。

    Cocos2d-x实战 JS卷

    Cocos2d-x实战

    cocos2d的学习资料

    cocos2d的学习资料,一本比较经典的cocos2d开发书,适合cocos2d/cocos2d-x的入门

    cocos2d事件响应总结

    cocos2d事件响应总结,包括sprite,layer等,响应事件的原理和一些容易发生的问题!

    cocos2d-x实战项目

    cocos2d-x实战项目 01.cocos2d-x原理及环境配置.rar 03.cocostudio使用方法及UI控制.rar 04.XML文件读取与骨骼动画.rarcocos2d-x实战项目 01.cocos2d-x原理及环境配置.rar 03.cocostudio使用方法及UI控制.rar 04.XML...

    教你用Cocos2D-X开发跨平台移动应用

    Cocos2d-x源于Cocos2d,是一款开源游戏引擎项目,是一款基于对原有iOS平台cocos2d重写为C++的开源代码,封装了OpenGL,Box2d,LibCurl,LibPng等开源的跨平台代码。由于基于C++和STL特点使其广泛应用于游戏开发、移动...

    cocos2d-x 3.0

    cocos2d-x 3.0 人物行走 . 包里有代码和 图片资源.

    cocos2d粒子编辑器 particle_builder -windows

    windows环境,一款很好用cocos2d粒子特效编辑器,里面有不少例子

    cocos2d游戏资源

    cocos2d资料大全,里面有丰富的资源,游戏引擎是一种特殊的软件,它提供游戏开发时需要的常见功能;引擎会提供许多组件,使用这些组件能缩短开发时间,让游戏开发变得更简单;专业引擎通常会能比自制引擎表现出更好的...

Global site tag (gtag.js) - Google Analytics