【Cocos2d-X开发学习笔记】第23期:事件处理机制之按键事件
2013-08-18 09:28
946 查看
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010
一、按键事件
使用IOS系统设备中只有Home键,按下Home键,程序进入后台。而使用Android系统的部分设备会有Menu键和
返回键,因此有时需要检测设备的键盘输入,使用键盘事件代理CCKeypadDelegate处理相应的事件。
CCKeypadDelegate类的继承关系如下图所示。
![](http://img.blog.csdn.net/20130818085356921)
布景层类CCLayer和其子类继承自CCKeypadDelegate类,因此布景层类和其子类可以使用获得键盘事件的方法。
1、CCKeypadDelegate类的函数
CCKeypadDelegate类的公共函数见下图。
![](http://img.blog.csdn.net/20130818085946390)
一般的处理方法是,按下返回键时返回之前的页面,按下Menu键时弹出菜单等。
2、按键监听事件的使用步骤。
<1> 首先使用CCKeypadDelegate接口。CCLayer默认使用CCKeypadDelegate接口,所以其子类不需要再次使用此
接口。
<2> 重写两个按键的回调函数:
<3> setKeypadEnabled(true)设置按键为可操作。
二、按键事件项目实例
1、首先新建Cocos2D-X项目,取名为“MyKeypad”,然后在HelloWorldScene.h文件中声明如下成员函数和变量。
2、在HelloWorldScene.cpp文件中的init函数中添加如下所示代码。
3、最后在HelloWorldScene.cpp文件中添加如下所示函数。
4、实例运行效果图。
![](http://img.blog.csdn.net/20130818092508562)
源码下载地址
一、按键事件
使用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开发学习笔记】第24期:事件处理机制之加速度传感器事件
- 【Cocos2d-X开发学习笔记】第22期:事件处理机制之触屏事件
- 【Cocos2d-X开发学习笔记】第22期:事件处理机制之触屏事件
- Cocos2d-x学习笔记(九)-------->Touch事件处理机制
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第十五课:Cocos2D-X事件处理1-7
- Cocos2d-x学习笔记(五)CCLayer分析及输入事件处理(触摸、重力传感器、按键)
- cocos2d-x-3.1 事件分发机制 (coco2d-x 学习笔记七)
- Android应用开发学习笔记之多线程与Handler消息处理机制
- Android应用开发学习笔记之事件处理
- Java学习笔记(AWT 之 事件处理机制)
- 【iOS-Cocos2d游戏开发】触屏事件处理机制
- cocos2D-x 3.x学习笔记【二】 事件机制入门
- Cocos2d-x学习笔记(二十六)之 按键事件
- cocos2d-x学习笔记——EventDispatcher事件分发机制
- 【cocos2d-x IOS游戏开发-城市跑酷14】重写触屏[Touch]事件处理机制,响应玩家操作
- Cocos2D-X2.2.3学习笔记8(处理精灵单击、双击和三连击事件)
- iOS开发学习笔记 -- (二)动态添加控件和事件处理
- JavaScript学习笔记之事件处理机制
- ZP的EXTJS学习笔记(三)——邮箱功能的开发(按钮事件、下拉框、分页、record小图标、整条数据格式处理、定时刷新、record复选删除、分组)
- Cocos2d-X 学习笔记 22 CCLayer 界面Touch事件处理