【发布时间】:2015-09-24 21:41:31
【问题描述】:
我有一个播放器类,具有 MoveUp、MoveLeft 和 MoveRight 函数。
在MainScene.cpp(我目前唯一的场景),我有一个听众
auto keyboardListener = EventListenerKeyboard::create();
keyboardListener->onKeyPressed = CC_CALLBACK_2(MainScene::keyPressed, this);
keyboardListener->onKeyReleased = CC_CALLBACK_2(MainScene::keyReleased, this);
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(keyboardListener, this);
另外,我有一个指针player,由
this->player = rootNode->getChildByName<Player*>("Player1");
另外,我在MainScene 中有一个函数keyPressed 和keyReleased。
在keyPressed 函数中,我使用 if 来调度函数:
if (keyCode == cocos2d::EventKeyboard::KeyCode::KEY_D) { schedule(schedule_selector(MainScene::MoveRight)); }
但是有一个问题,当我尝试对对象而不是 sprite 以及位于单独类中而不是在同一个文件中的函数做同样的事情时。
如果我尝试在MainScene::keyPressed 中运行这样的代码:
if (keyCode == cocos2d::EventKeyboard::KeyCode::KEY_W) { this->player->MoveLeft(5); }
,player 每次按键仅移动一次(我希望它移动直到我释放该键),如果我尝试安排它或执行类似的操作,它不起作用或有错误。
我尝试使用CallFunc 和CCCallFunc 制作一些东西,但似乎没有任何效果。
请你帮助我好吗? :)
【问题讨论】:
标签: c++ keyboard cocos2d-x cocos2d-x-3.0