在HelloWorldScene.cpp开头添加以下宏,分别是判别某键是否被松开、按下;
#include <windows.h>
#define KEY_UP(vk_code)(GetAsyncKeyState(vk_code) & 0x8000 ? 0 : 1)
#define KEY_DOWN(vk_code)(GetAsyncKeyState(vk_code) & 0x8000 ? 1 : 0)
后在init函数中添加以下内容:
//添加可移动内容
auto spine= sprite:create("picture.png");
//方法一
auto keyListener = EventListenerKeyboard::create();//添加键盘侦听器
//响应键盘按下事件
keyListener->onKeyPressed = [this,spine](EventKeyboard::KeyCode keyCode, Event* event){
if( KEY_DOWN( VK_DOWN ) )
{
ActionInterval * forwardBy = MoveBy::create(0.1F, ccp(0, -10));
spine->runAction(RepeatForever::create(forwardBy));
}
else if( KEY_DOWN( VK_UP ) )
{
ActionInterval * forwardBy = MoveBy::create(0.1F, ccp(0,10));
spine->runAction(RepeatForever::create(forwardBy));
}
else if(KEY_DOWN(VK_LEFT))
{
ActionInterval * forwardBy = MoveBy::create(0.1F, ccp(-10, 0));
spine->runAction(RepeatForever::create(forwardBy));
}
else if(KEY_DOWN(VK_RIGHT))
{
ActionInterval * forwardBy = MoveBy::create(0.1F, ccp(10, 0));
spine->runAction(RepeatForever::create(forwardBy));
}
/* 响应按键松开事件 */
keyListener->onKeyReleased = [this,spine](EventKeyboard::KeyCode keyCode, Event* event){
spine->stopAllActions();
};
_eventDispatcher->addEventListenerWithSceneGraphPriority(keyListener, this);
//方法二
keyListener->onKeyPressed = [](EventKeyboard::KeyCode keyCode, Event* event){
switch(keyCode)
{
case EventKeyboard::KeyCode::KEY_RIGHT_ARROW:
log("AAAAAA");
break;
default:
break;
}