`
810364804
  • 浏览: 819940 次
文章分类
社区版块
存档分类
最新评论

【Cocos2d-X开发学习笔记】第23期:事件处理机制之按键事件

 
阅读更多

本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010

一、按键事件

使用IOS系统设备中只有Home键,按下Home键,程序进入后台。而使用Android系统的部分设备会有Menu键和

返回键,因此有时需要检测设备的键盘输入,使用键盘事件代理CCKeypadDelegate处理相应的事件。

CCKeypadDelegate类的继承关系如下图所示。

布景层类CCLayer和其子类继承自CCKeypadDelegate类,因此布景层类和其子类可以使用获得键盘事件的方法。

1、CCKeypadDelegate类的函数

CCKeypadDelegate类的公共函数见下图。

一般的处理方法是,按下返回键时返回之前的页面,按下Menu键时弹出菜单等。

2、按键监听事件的使用步骤。

<1> 首先使用CCKeypadDelegate接口。CCLayer默认使用CCKeypadDelegate接口,所以其子类不需要再次使用此

接口。

<2> 重写两个按键的回调函数:

virtual void keyBackClicked();
    virtual void keyMenuClicked();


<3> setKeypadEnabled(true)设置按键为可操作。

二、按键事件项目实例

1、首先新建Cocos2D-X项目,取名为“MyKeypad”,然后在HelloWorldScene.h文件中声明如下成员函数和变量。

class HelloWorld : public cocos2d::CCLayer
{
public:
    // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
    virtual bool init();  

    // there's no 'id' in cpp, so we recommand to return the exactly class pointer
    static cocos2d::CCScene* scene();
    
    virtual void keyBackClicked();
    virtual void keyMenuClicked();
	   
    // implement the "static node()" method manually
    CREATE_FUNC(HelloWorld);

private:
	cocos2d::CCLabelTTF*  m_pLabel;
};


2、在HelloWorldScene.cpp文件中的init函数中添加如下所示代码。

bool HelloWorld::init()
{
    bool bRet = false;
    do 
    {
        CC_BREAK_IF(! CCLayer::init());

        CCSize s = CCDirector::sharedDirector()->getWinSize();

		CCLabelTTF* label = CCLabelTTF::create("Keypad Test", "Arial", 28);
		addChild(label, 0);
		label->setPosition( ccp(s.width/2, s.height-50) );

		setKeypadEnabled(true);

		// create a label to display the tip string
		m_pLabel = CCLabelTTF::create("Please press any key...", "Arial", 22);
		m_pLabel->setPosition(ccp(s.width / 2, s.height / 2));
		addChild(m_pLabel, 0);
    
		m_pLabel->retain();

        bRet = true;
    } while (0);

    return bRet;
}

3、最后在HelloWorldScene.cpp文件中添加如下所示函数。

void HelloWorld::keyBackClicked()
{
    m_pLabel->setString("BACK clicked!");
}

void HelloWorld::keyMenuClicked()
{
    m_pLabel->setString("MENU clicked!");
}


4、实例运行效果图。

源码下载地址

分享到:
评论

相关推荐

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

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

    Cocos2D-X开发学习笔记-按键事件使用示例

    总之,Cocos2D-X的按键事件处理是通过`EventListenerKeyboard`类和对应的回调函数实现的,这使得开发者能够轻松响应用户的键盘输入,为游戏或应用增加丰富的交互功能。通过学习和实践,你可以进一步掌握这一关键机制...

    Cocos2d-x学习笔记

    Cocos2d-x框架除了Windows平台外,还支持iOS、Android、Mac OS X、Web等平台,初学者在掌握了Windows平台的开发后,可以进一步学习如何使用Cocos2d-x跨平台开发,实现一个游戏在多个平台上运行。 在学习过程中,...

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

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

    Cocos2d-x 3.x游戏开发实战pdf含目录

    《Cocos2d-x 3.x游戏开发实战》是一本深度探讨Cocos2d-x 3.x框架的游戏开发书籍,适合对游戏编程有兴趣的开发者学习。Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的...

    Cocos2D-X开发学习笔记-游戏数据存储项目实例(上)

    Cocos2D-X没有内置的序列化机制,但开发者可以利用`cocos2d::Value`和`cocos2d::ValueMap`进行自定义实现。 6. **云存储服务**:对于网络游戏,考虑使用云存储服务如Apple的Game Center、Google Play Games ...

    Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整

    标题中提到了"Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整",这里面包含了几个关键知识点: 1. Cocos2d-x:是一个开源的游戏开发框架,它主要用于开发跨平台的游戏和应用程序,支持iOS、...

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

    《Cocos2d-x实战 JS卷 Cocos2d-JS开发》是一本深入探讨Cocos2d-x游戏引擎JavaScript版本使用的专业书籍。Cocos2d-x是全球范围内广泛采用的游戏开发框架,尤其适用于2D游戏的制作,而Cocos2d-JS则是其JavaScript接口...

    cocos2d-x学习笔记

    《cocos2d-x学习笔记》 在学习cocos2d-x时,了解其核心组件和工作流程至关重要。AppDelegate是cocos2d-x框架中的一个关键类,它扮演着应用程序入口点的角色,处理应用程序的生命周期事件。让我们深入探讨...

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

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

    Cocos2d-x实战 JS卷

    《Cocos2d-x实战 JS卷》是一本深入探讨Cocos2d-x游戏开发的专著,主要聚焦于使用JavaScript语言进行游戏编程。Cocos2d-x是一个开源的游戏开发框架,广泛应用于移动设备和桌面平台,支持iOS、Android、Windows等多...

    cocos2d-x事件类

    在使用cocos2d-x开发游戏的过程中,为了实现逻辑和显示相分离。 在下通宵了一个晚上,写出了该事件类。 谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类...

    cocos2d-x-3.1.zip

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

    Cocos2D-X游戏开发技术精解

    资源名称:Cocos2D-X游戏开发技术精解内容简介:Cocos2D-X是一款支持多平台的 2D手机游戏引擎,支持iOS、Android、BlackBerry等众多平台。当前,很多移动平台流行的游戏,都是基于Cocos2D-X开发的。 《Cocos2D-X...

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

    12. **扩展性**:cocos2d-x提供了插件系统和扩展API,方便开发者添加自定义功能和第三方库。 在学习和使用cocos2d-x 3.8时,开发者需要注意与最新版本的差异,例如API的变化、新功能的缺失等。同时,由于3.8是旧...

    cocos2d-x 3.0

    《cocos2d-x 3.0:游戏开发中的角色移动技术详解》 在游戏开发领域,cocos2d-x是一款广泛使用的开源2D游戏引擎,尤其在移动平台上的应用非常广泛。cocos2d-x 3.0版本带来了许多性能优化和新特性,使得开发者能够更...

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

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

    Cocos2D-X开发学习笔记-动作类之基础动作的使用示例(下)

    Cocos2D-X是一款流行的开源游戏开发框架,尤其在2D游戏领域有着广泛的应用。它提供了丰富的API和功能,使得开发者能够轻松创建出各种复杂的2D游戏。在Cocos2D-X中,动作(Actions)是游戏对象行为的核心组成部分,...

    cocos2d-x 案例开发大全 第二章(源码)

    《cocos2d-x案例开发大全》第二章的源码主要涵盖了使用cocos2d-x进行游戏开发的各种实践技巧和示例。cocos2d-x是一个开源的游戏开发框架,基于C++,支持跨平台,包括iOS、Android、Windows等多个操作系统。本章的...

Global site tag (gtag.js) - Google Analytics