我有一个球员课程
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");
还有,我有一个功能
keyPressed
和
keyReleased
在里面
MainScene
.
在里面
按键已按下
函数,我用if调度函数:
if (keyCode == cocos2d::EventKeyboard::KeyCode::KEY_D) { schedule(schedule_selector(MainScene::MoveRight)); }
但是,当我尝试用对象而不是精灵来做同样的事情时,出现了一个问题,并且函数位于单独的类中,而不是在同一个文件中。
如果我尝试在
MainScene::keyPressed
:
if (keyCode == cocos2d::EventKeyboard::KeyCode::KEY_W) { this->player->MoveLeft(5); }
,
游戏者
每次按键只移动一次(我希望它移动,直到我释放该键),如果我尝试安排它或执行类似的操作,它不会工作或出现错误。
我试着用
CallFunc
和
CCCallFunc
,但似乎没有任何效果。
你能帮我吗