加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

多平台响应键盘事件!(适用于Cocos2dx 3.0 alpha以上版本)

发布时间:2020-12-14 19:37:28 所属栏目:百科 来源:网络整理
导读:Hello everyone! For a week I’ve been looking on how to make a keyboard work! I managed to figure it out and I want to share my knowledge with you! So,before we get started - this tutorial only works on Cocos2d-x 3.0alpha and later. We wil

Hello everyone! For a week I’ve been looking on how to make a keyboard work!
I managed to figure it out and I want to share my knowledge with you!
So,before we get started - this tutorial only works on Cocos2d-x 3.0alpha and later.
We will start by making two functions in the scene we want keyboard on.
They will be:

首先在需要键盘处理事件的场景中文件中添加如下两个函数。

OurScene.h:
void keyPressed(cocos2d::EventKeyboard::KeyCode keyCode,cocos2d::Event *event);
void keyReleased(cocos2d::EventKeyboard::KeyCode keyCode,cocos2d::Event *event);

OurScene.cpp:
void OurScene::keyPressed(cocos2d::EventKeyboard::KeyCode keyCode,cocos2d::Event *event)
{

}
void OurScene::keyReleased(cocos2d::EventKeyboard::KeyCode keyCode,cocos2d::Event *event)
{

}

These functions will be called when we press/release a key on the keyboard.
Next we need a listener to look for the keyboard we will create it like so (I did it in the init function)

当键盘按下时会调用上面这两的函数。

接下来在init()方法中添加如下代码来监听键盘事件。

auto keyboardListener = EventListenerKeyboard::create();
keyboardListener->onKeyPressed = CC_CALLBACK_2(OurScene::keyPressed,this);
keyboardListener->onKeyReleased = CC_CALLBACK_2(OurScene::keyReleased,this);
EventDispatcher::getInstance()->addEventListenerWithSceneGraphPriority(listener,this); // use if your version is below cocos2d-x 3.0alpha.1
// use this: Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,this); if you are using cocos2d-x 3.0alpha.1 and later!

This code creates a keyboard listener and then setting what functions will be called when the key is pressed or released.
Now Our program can detect keyboard! Wait… How do I know what key is pressed? It is simple! Let me show you:

然后就可以在最上面的两个方法中添加keyCode的判定了。

//put this inside keyPressed or keyReleased
if (keyCode == EventKeyboard::KeyCode::KEY_W)
{
    CCLog("W key was pressed");
}

This piece of code will check what is the key-code of the key that was pressed. The list of key-codes is inside the EventKeyboard class. To use a keycode you just type:
EventKeyboard::KeyCode::KEY_**whatever key** - you will usually get a list of available keys to chose from.

Well,I think that’s it! Enjoy!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读