用map 来存放按键的状态是不是按压中
std::map<cocos2d::EventKeyboard::KeyCode, bool> keyMap;
this->scheduleUpdate();
void SecondScene::onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event)
{
keyMap[keyCode] = true;
switch (keyCode) {
case EventKeyboard::KeyCode::KEY_SPACE:
{
//新建jump指针,指向JumpBy::create()返回一个Action的指针对象
Action *jump = JumpBy::create(.5, Vec2(0, 0), 20, 1);
//执行,让它跳一下
primesprite->runAction(jump); break;
}
}
}
void SecondScene::onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event)
{
keyMap[keyCode] = false;
}
void SecondScene::update(float delta)
{
log("1");
auto w = EventKeyboard::KeyCode::KEY_W;
auto s = EventKeyboard::KeyCode::KEY_S;
auto a = EventKeyboard::KeyCode::KEY_A;
auto d = EventKeyboard::KeyCode::KEY_D;
int offsetx = 0;
int offsety = 0;
if (keyMap[a])
{
offsetx = -4;
}
if (keyMap[d])
{
offsetx = 4;
}
if (keyMap[w])
{
offsety = 4;
}
if (keyMap[s])
{
offsety = -4;
}
if (offsetx == 0&&offsety==0)
return;
auto moveto = MoveTo::create(0.2, ccp(primesprite->getPosition().x + offsetx, primesprite->getPosition().y + offsety));
primesprite->runAction(moveto);
}