`

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-JS游戏开发

    通过深入学习和实践,你将掌握Cocos2d-JS的各个模块,包括场景管理、动画制作、物理引擎应用、事件处理以及性能优化等。结合书中提供的示例和代码,你将有能力开发出自己的Cocos2d-JS游戏,无论是简单的休闲游戏还是...

    Cocos2d-x实战:C++卷(2版)源代码

    5. **事件处理**:Cocos2d-x提供了事件处理机制,包括触摸事件、键盘事件、网络事件等,使得游戏能够响应用户的输入。 6. **声音与音乐**:Cocos2d-x支持音频播放,包括背景音乐和音效,可以实现音效的同步和控制。...

    Cocos2d-x实战 JS卷

    5. **事件处理**:掌握事件监听和响应机制,包括触摸事件、键盘事件以及自定义事件的处理,实现用户交互。 6. **游戏逻辑**:学习如何组织游戏逻辑,包括状态管理、游戏循环、时间管理和AI设计。 7. **资源管理**...

    Cocos2d-x实战C++卷关东升著完整版pdf

    接着,书中会讲解Cocos2d-x的事件处理机制,包括触摸事件、键盘事件等,这些都是游戏交互必不可少的部分。同时,还会涉及动画和物理引擎的使用,如动作(Action)、序列(Sequence)、组(Group)以及Box2D物理引擎...

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    6. **事件处理**:提供触摸、键盘、摇杆等多种输入事件的处理机制,使开发者能快速响应用户操作。 7. **物理引擎**:集成Box2D物理引擎,可以轻松实现物理模拟,如碰撞检测和刚体动力学。 8. **Audio支持**:支持...

    cocos2d-html5-v2.2.3.zip

    8. **事件处理**:通过事件监听和处理机制,开发者可以轻松响应用户输入,实现游戏交互。 9. **游戏工具**:除了核心库,Cocos2d-html5通常会包含一系列开发工具,如编辑器、资源管理器和调试器,帮助开发者更高效...

    cocos2d-x-3.1.zip

    总的来说,Cocos2d-x 3.1是游戏开发者学习2D游戏开发的一个重要参考点,虽然它已经不是最新的版本,但其核心概念和机制在后续版本中仍然保持一致,是理解整个Cocos2d-x框架的基础。解压并研究“cocos2d-x-3.1”中的...

    Cocos2D-X开发学习笔记-触屏事件使用示例

    首先,我们要了解Cocos2D-X中的触摸事件处理机制。在Cocos2D-X中,触屏事件主要通过`Touch`类和`TouchEvent`类来实现。`Touch`代表一次触摸行为,而`TouchEvent`则包含了多个`Touch`对象,表示一次多点触摸事件。...

    cocos2d 2.0与UIKit结合的例子

    3. **事件处理**:由于Cocos2d有自己的事件处理机制,而UIKit也有其独立的事件模型,因此需要协调两者的事件处理。可以使用`-[UIResponder becomeFirstResponder]`和`-[UIResponder resignFirstResponder]`来控制...

    cocos2d-iphone-2.0.tar.gz

    12. **Multitouch Support**:针对iOS设备的多点触控特性,Cocos2d-iPhone提供了易于使用的事件处理机制,可以处理多个手指的触摸事件。 13. **Debugging Tools**:框架内嵌了调试工具,如性能分析器、内存泄漏检测...

    保卫萝卜cocos2d源码

    在《保卫萝卜》中,Cocos2d的场景管理、精灵动画和事件处理等特性得到了充分的应用。 1. 场景管理:Cocos2d的Scene类代表游戏中的一个完整场景,如主菜单、游戏关卡等。在《保卫萝卜》中,每个关卡可以视为一个独立...

    cocos2d的学习资料

    Cocos2d是一款广泛应用于游戏开发、图形界面和2D应用程序的开源框架,它支持多种编程语言,包括Python(cocos2d),Objective-C(cocos2d-objc)以及C++(cocos2d-x)。这篇学习资料是针对cocos2d/x,特别是cocos2d-...

    cocos2d js api 中文文档

    4. **事件处理(Event Handling)**:框架提供了触摸、键盘、鼠标等事件处理机制,方便用户交互。事件监听器可以注册到节点上,实现响应式编程。 5. **物理引擎(Physics Engine)**:Cocos2d-js集成了Box2D物理...

    用Cocos2d-x编写大富翁游戏源码,可联网

    在本文中,我们将深入探讨如何使用Cocos2d-x框架来...通过理解游戏机制,利用Cocos2d-x提供的工具和库,可以创建出一款可联网对战的大富翁游戏。在实际开发过程中,还需要不断调试和优化,确保游戏的稳定性和趣味性。

    cocos2d-x 跑酷源码

    3. 触摸事件处理:跑酷游戏通常需要响应玩家的触摸操作,如滑动屏幕控制角色移动,cocos2d-x提供了触摸事件监听机制。 4. 物理引擎:Box2D物理引擎用于模拟角色与障碍物的碰撞,实现真实感的运动效果。 5. 游戏逻辑...

    cocos2d-x游戏源码 三国策略游戏源码

    源码中会包含事件监听和处理机制,例如单位选择、指令下达等。 6. **游戏逻辑与AI**:战略游戏的核心是其策略和决策过程。源码中的AI系统可能是通过状态机或者更复杂的设计模式实现的,这涉及到游戏规则的编码和...

    Cocos2d-JS---demo

    4. **事件系统**:Cocos2d-JS 提供了完善的事件处理机制,如触摸事件、键盘事件等,让开发者能够轻松响应用户操作。 5. **资源管理**:Cocos2d-JS 包含了图片、音频、字体等资源的加载和管理功能,支持异步加载,...

    cocos2d-x+socket

    cocos2d-x的异常处理机制可以帮助我们捕获并处理这些错误。 四、cocos2d-x中的Socket实战 在压缩包中的`net`文件可能包含了具体的代码示例或教程,用于演示如何在cocos2d-x中实现Socket通信。这些示例通常会涵盖...

    cocos2d-x贼来了塔防

    Cocos2d-x提供了资源加载和缓存机制,确保游戏运行时能高效地访问和使用这些资源。 7. **游戏保存和加载**:为了允许玩家在不同时间继续游戏,游戏可能实现了进度保存和加载功能,这通常涉及到数据序列化和反序列化...

Global site tag (gtag.js) - Google Analytics