创建键盘事件出现下面错误,如何修改

代码如下:

bool HelloWorld::init(){
     auto listener=EventListenerKeyboard::create();
     listener->onKeyPressed=CC_CALLBACK_2(HelloWorld::onKeyPressed,this);
     listener->onKeyReleased=CC_CALLBACK_2(HelloWorld::onKeyReleased,this);
     _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);
}

bool HelloWorld::onKeyPressed(){
     Sprite* pSprite=Sprite::create("ty.png");
     pSprite->setPosition(Vec2(200,200));
     this->addChild(pSprite);
     auto pMoveBy=MoveBy::create(1.0,Vec2(100,0));
     pSprite->runAction(pMoveBy);
     return true;
}
void HelloWorld::onKeyReleased(){
}

运行后出现如下错误:

回调的参数和返回值不对

回调参数和返回值要如何修改?

看源码里的listener里面onKeyPressed和onKeyReleased的类型

在HelloWorldScene.h文件中修改如下:

void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event);
void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);

在HelloWorldScene.cpp文件中修改如下:

bool HelloWorld::init()
{
    auto listener=EventListenerKeyboard::create();
    listener->onKeyPressed=CC_CALLBACK_2(HelloWorld::onKeyPressed,this);
    listener->onKeyReleased=CC_CALLBACK_2(HelloWorld::onKeyReleased,this);
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);
}
void HelloWorld::onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event){
    Sprite* pSprite=Sprite::create("ty.png");
    pSprite->setPosition(Vec2(200,200));
    this->addChild(pSprite);
    auto pMoveBy=MoveBy::create(1.0,Vec2(100,0));
    pSprite->runAction(pMoveBy);	
}
void HelloWorld::onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event){

}

但运行后出现以下错误:

头文件和cpp文件发一下

文件已上传.
demo.rar (531.2 KB)

参数里补上cocos命名空间试试

在HelloWorldscene.h文件中修改如下就可以了:

void onKeyPressed(cocos2d::EventKeyboard::KeyCode keyCode,cocos2d::Event* event);
void onKeyReleased(cocos2d::EventKeyboard::KeyCode keyCode,cocos2d::Event* event);

但是还有另一个问题,之前的代码随便按键盘上任意一个按键都可以执行函数里的动画,如果我要为它指定某一个按键才能执行函数里的动画,(比如K键或空格键等等),这样该如何实现呢?

if (keyCode == EventKeyboard::KeyCode::KEY_A) {
    //...
}

多看看引擎源码,官方项目里也有test案例

引擎源码在哪里?

和你的项目在一起的

另一个问题,
我将指针指向私有成员节点指针变量,但程序运行后,一旦点击了menuCloseCallback2按钮后程序就停止工作,为什么会这样?

怎样修改才能让按钮menuCloseCallback1暂停popScene3函数中节点node2的动画?
能否看一下,文件已上传:
demo.rar (532.3 KB)

void HelloWorld::popScene2(float t){
Sprite* pSprite2=Sprite::create("ty.png");
pSprite2->setPosition(Vec2(200,100));
this->addChild(pSprite2);
node2=pSprite2;
HelloWorld q;
q.popScene3();
}

变量q是你新建的helloworld,这个新的helloworld没有node2

问题比较多,私聊吧