Cococs2d-x键盘实现

时间:2013-11-14 08:07:11

标签: windows macos cocos2d-x keyboard-events cocos2d-x-3.0

我正在使用cocos2d-x为windows,mac和linux制作游戏 我想在我的游戏中使用键盘,但没有正式的键盘实现 的cocos2d-x3.0alpha。我阅读了很多关于键盘实现的论坛文章,我看到了一些自定义的cocos2d-x braches,但我已经修改了我的cocos2d-x所以我需要将代码放在CCDirector或其他类中。有人可以给我一些关于如何使其工作的代码吗? (不是我希望代码可以在所有上述平台上运行的项目)
谢谢!

1 个答案:

答案 0 :(得分:3)

所以我开始工作了我也做了一个教程,你可以在这里查看: http://www.cocos2d-x.org/forums/6/topics/39145

我们将首先在我们想要键盘的场景中创建两个函数。 他们将是:

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)
{

}

当我们按下/释放键盘上的键时,将调用这些功能。 接下来我们需要一个监听器来查找我们将创建它的键盘(我在init函数中做到了)

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

此代码创建一个键盘侦听器,然后设置按下或释放键时将调用的函数。 现在我们的程序可以检测键盘!

等等......我怎么知道按下了什么键?很简单!让我告诉你:

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

这段代码将检查按下的键的键控代码是什么。密钥代码列表位于EventKeyboard类中。要使用密钥代码,只需键入: EventKeyboard::KeyCode::KEY_**whatever key** - 您通常会获得可供选择的密钥列表。