文档章节

Cocos2d-x键盘按键

南楼
 南楼
发布于 2017/05/29 12:33
字数 869
阅读 38
收藏 0

在cocos2d-x的交互功能中,必不可免的会有键盘响应的事件(除了PC端游戏会用到键盘,现在有些手机或者平板也会插上键盘来进行辅助) 对于键盘事件的监听,许多教程或者书本上都有讲述。但是对于键盘具体按键的判断,许多教程书籍上并没有提到。笔者查阅了一下资料以及键盘事件的头文件,得到了一个相对简便的方法。

首先我们先创建一个事件监听器监听键盘事件

"HelloWorldScene.h"
//在HelloWorldScene.h头文件中重写键盘按下弹回的两个方法
virtual void onKeyPressed(EventKeyboard::KeyCode keycode, Event *event);
virtual void onKeyReleased(EventKeyboard::KeyCode keycode, Event *event);
"HelloWorldScene.cpp"
auto *dispatcher = Director::getInstance()->getEventDispatcher();
auto* keyListener = EventListenerKeyboard::create();
//创建一个事件监听器监听键盘事件
keyListener->onKeyPressed = CC_CALLBACK_2(HelloWorld::onKeyPressed, this);
//键盘被按下时响应
keyListener->onKeyReleased = CC_CALLBACK_2(HelloWorld::onKeyReleased, this);
//键盘按键被弹回时响应
dispatcher->addEventListenerWithSceneGraphPriority(keyListener,this);

许多教程书籍上对于键盘响应事件的讲解大多到这里就截止了,对于如何判断键盘按下的是哪个键大多读者都是十分迷茫。

其实判断键盘按键的方法就在键盘响应事件方法的第一个参数上:EventKeyboard::KeyCode keycode。对,就是EventKeyboard::KeyCode,KeyCode定义了键盘上所有的按键。

下面我们来看一下"CCEventKeyboard.h"头文件中KeyCode的定义

enum class KeyCode
    {
        KEY_NONE,
        KEY_PAUSE,
        KEY_SCROLL_LOCK,
        KEY_PRINT,
        KEY_SYSREQ,
        KEY_BREAK,
        KEY_ESCAPE,
        KEY_BACK = KEY_ESCAPE,
        KEY_BACKSPACE,
        KEY_TAB,
        KEY_BACK_TAB,
        KEY_RETURN,
        KEY_CAPS_LOCK,
        KEY_SHIFT,
        KEY_LEFT_SHIFT = KEY_SHIFT,
        KEY_RIGHT_SHIFT,
        KEY_CTRL,
        KEY_LEFT_CTRL = KEY_CTRL,
        KEY_RIGHT_CTRL,
        KEY_ALT,
        KEY_LEFT_ALT = KEY_ALT,
        KEY_RIGHT_ALT,
        KEY_MENU,
        KEY_HYPER,
        KEY_INSERT,
        KEY_HOME,
        KEY_PG_UP,
        KEY_DELETE,
        KEY_END,
        KEY_PG_DOWN,
        KEY_LEFT_ARROW,
        KEY_RIGHT_ARROW,
        KEY_UP_ARROW,
        KEY_DOWN_ARROW,
        KEY_NUM_LOCK,
        KEY_KP_PLUS,
        KEY_KP_MINUS,
        KEY_KP_MULTIPLY,
        KEY_KP_DIVIDE,
        KEY_KP_ENTER,
        KEY_KP_HOME,
        KEY_KP_UP,
        KEY_KP_PG_UP,
        KEY_KP_LEFT,
        KEY_KP_FIVE,
        KEY_KP_RIGHT,
        KEY_KP_END,
        KEY_KP_DOWN,
        KEY_KP_PG_DOWN,
        KEY_KP_INSERT,
        KEY_KP_DELETE,
        KEY_F1,
        KEY_F2,
        KEY_F3,
        KEY_F4,
        KEY_F5,
        KEY_F6,
        KEY_F7,
        KEY_F8,
        KEY_F9,
        KEY_F10,
        KEY_F11,
        KEY_F12,
        KEY_SPACE,
        KEY_EXCLAM,
        KEY_QUOTE,
        KEY_NUMBER,
        KEY_DOLLAR,
        KEY_PERCENT,
        KEY_CIRCUMFLEX,
        KEY_AMPERSAND,
        KEY_APOSTROPHE,
        KEY_LEFT_PARENTHESIS,
        KEY_RIGHT_PARENTHESIS,
        KEY_ASTERISK,
        KEY_PLUS,
        KEY_COMMA,
        KEY_MINUS,
        KEY_PERIOD,
        KEY_SLASH,
        KEY_0,
        KEY_1,
        KEY_2,
        KEY_3,
        KEY_4,
        KEY_5,
        KEY_6,
        KEY_7,
        KEY_8,
        KEY_9,
        KEY_COLON,
        KEY_SEMICOLON,
        KEY_LESS_THAN,
        KEY_EQUAL,
        KEY_GREATER_THAN,
        KEY_QUESTION,
        KEY_AT,
        KEY_CAPITAL_A,
        KEY_CAPITAL_B,
        KEY_CAPITAL_C,
        KEY_CAPITAL_D,
        KEY_CAPITAL_E,
        KEY_CAPITAL_F,
        KEY_CAPITAL_G,
        KEY_CAPITAL_H,
        KEY_CAPITAL_I,
        KEY_CAPITAL_J,
        KEY_CAPITAL_K,
        KEY_CAPITAL_L,
        KEY_CAPITAL_M,
        KEY_CAPITAL_N,
        KEY_CAPITAL_O,
        KEY_CAPITAL_P,
        KEY_CAPITAL_Q,
        KEY_CAPITAL_R,
        KEY_CAPITAL_S,
        KEY_CAPITAL_T,
        KEY_CAPITAL_U,
        KEY_CAPITAL_V,
        KEY_CAPITAL_W,
        KEY_CAPITAL_X,
        KEY_CAPITAL_Y,
        KEY_CAPITAL_Z,
        KEY_LEFT_BRACKET,
        KEY_BACK_SLASH,
        KEY_RIGHT_BRACKET,
        KEY_UNDERSCORE,
        KEY_GRAVE,
        KEY_A,
        KEY_B,
        KEY_C,
        KEY_D,
        KEY_E,
        KEY_F,
        KEY_G,
        KEY_H,
        KEY_I,
        KEY_J,
        KEY_K,
        KEY_L,
        KEY_M,
        KEY_N,
        KEY_O,
        KEY_P,
        KEY_Q,
        KEY_R,
        KEY_S,
        KEY_T,
        KEY_U,
        KEY_V,
        KEY_W,
        KEY_X,
        KEY_Y,
        KEY_Z,
        KEY_LEFT_BRACE,
        KEY_BAR,
        KEY_RIGHT_BRACE,
        KEY_TILDE,
        KEY_EURO,
        KEY_POUND,
        KEY_YEN,
        KEY_MIDDLE_DOT,
        KEY_SEARCH,
        KEY_DPAD_LEFT,
        KEY_DPAD_RIGHT,
        KEY_DPAD_UP,
        KEY_DPAD_DOWN,
        KEY_DPAD_CENTER,
        KEY_ENTER,
        KEY_PLAY
    };

看到这想必绝大多数读者就已经明白了,就是判断键盘按键所产生的EventKeyboard::KeyCode 的值。 下面写个例子

//重写onKeyPressed方法来实现具体按键的判断
void HelloWorld::onKeyPressed(EventKeyboard::KeyCode keycode, Event *event) {
	if (keycode == EventKeyboard::KeyCode::KEY_UP_ARROW) {
		CCLOG("按下了:上方向键");
	}
	else if (keycode == EventKeyboard::KeyCode::KEY_LEFT_ARROW) {
		CCLOG("按下了:左方向键");
	}
	else if (keycode == EventKeyboard::KeyCode::KEY_RIGHT_ARROW) {
		CCLOG("按下了:右方向键");
	}
	else if (keycode == EventKeyboard::KeyCode::KEY_DOWN_ARROW) {
		CCLOG("按下了:下方向键");
	}
}

这样键盘按键通过与KeyCode的定义值进行比较,可以判断出键盘是否按出来我们所需要的键。当然要得出按下了哪一个键,通过输出KeyCode的值就可以得到了。

© 著作权归作者所有

共有 人打赏支持
南楼
粉丝 0
博文 7
码字总数 5247
作品 0
沈阳
程序员
私信 提问
Cocos2d-x 2.0 按键加速处理深入分析

[Cocos2d-x相关教程来源于红孩儿的游戏编程之路CSDN博客地址:http://blog.csdn.net/honghaier 红孩儿Cocos2d-X学习园地QQ2群:44208467 Cocos2d-x 2.0 按键加速处理深入分析 另:本章所用C...

长平狐
2013/03/19
563
0
Cocos2d-JS键盘事件

Cocos2d-JS中的键盘事件与触摸事件不同,它没有空间方面信息。键盘事件不仅可以响应键盘,还可以响应设备的菜单。 键盘事件是EventKeyboard,对应的键盘事件监听器(cc.EventListener.KEYBOA...

智捷课堂
2015/04/01
0
0
cocos2d-x学习资料(转)

我之前一直学习c++的,第一次接触cocos2d是oc版的,虽然很好用,但是,我还是对c++情有独钟,再加之cocos2d-x由自己人主导,更应该拥抱她,热爱她,把她发扬光大。之后,我将会全面投入c...

未来十年
2012/07/31
0
0
11.2 Actions类介绍

我们已经学过了单击click() 方法,但这还不够,我们实际工作中通过鼠标除了单击外,我们还会用到右键,双击,拖拽等等,也可能需要用到键盘操作,那这些操作WebDriver的Actions类都支持。 在...

米阳MeYoung
2018/06/25
0
0
EV_REP,input_repeat_key,键盘重复,GPIO键盘

【转帖请注明出处:blog.csdn.net/lanmanck】 要实现的效果:类似桌面打开记事本,按下键盘后有输入,按住按键不放的话就连续输入。 环境:嵌入式Linux系统,键盘有GPIO扫描实现,模拟成标准...

长平狐
2012/06/12
770
1

没有更多内容

加载失败,请刷新页面

加载更多

Amino——框架层

框架层 目录 框架层... 1 Amino. 2 (一)、首页(TAB1)... 2 (二)、聊天(TAB2)... 3 (三)、我的社区(TAB3)... 5 (四)、探索(TAB4)... 6 (五)、钱包... 7 兴趣部落... 8 (一...

铸剑为犁413
10分钟前
0
0
k8s-dashboard

Kubernetes Dashboard 是一个管理Kubernetes集群的全功能Web界面,旨在以UI的方式完全替代命令行工具(kubectl 等) kubectl apply -f http://mirror.faasx.com/kubernetes/dashboard/master...

ZH-JSON
17分钟前
0
0
python如何安装库命令

python3 -m pip install 库名称

怪咖先生forever
17分钟前
0
0
如何将Collection应用到实际开发当中

//举个例子 //Student类 public class Student { public String name; public String age; public Student(String name, String age) {this.name = name;this.age = age; } public S......

南桥北木
22分钟前
0
0
聊聊flink的ProcessFunction

序 本文主要研究一下flink的ProcessFunction 实例 import org.apache.flink.api.common.state.ValueState;import org.apache.flink.api.common.state.ValueStateDescriptor;import org.apa......

go4it
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部