Android后退按钮在Cocos2d-x中不起作用

Android后退按钮在Cocos2d-x中不起作用,android,cocos2d-x,Android,Cocos2d X,我想退出我的Cocos2d-x游戏,在Android上按后退按钮。为此,我在我的类gamesence中重载了CCLayer::keyBackClicked方法,我还从gamesence::init调用了setKeypadEnabled(true)。但是,按下后退按钮时,不会调用keyBackClicked方法,我已使用CCLog消息进行了检查。我还需要做些什么才能让这一切顺利进行?我在这个主题上搜索了很多,找到了上面的解决方案,但它不起作用 这是我的密码 bool GameScene:: ini

我想退出我的Cocos2d-x游戏,在Android上按后退按钮。为此,我在我的类
gamesence
中重载了
CCLayer::keyBackClicked
方法,我还从
gamesence::init
调用了
setKeypadEnabled(true)
。但是,按下后退按钮时,不会调用
keyBackClicked
方法,我已使用
CCLog
消息进行了检查。我还需要做些什么才能让这一切顺利进行?我在这个主题上搜索了很多,找到了上面的解决方案,但它不起作用

这是我的密码

bool GameScene:: init() {
    if(CCLayer::init()) {
        CCLog("Init");
        this->setKeypadEnabled(true);
        return true;
    }
    return false;
}

void GameScene:: keyBackClicked(void) {
    CCLayer::keyBackClicked();
    CCLOG("cclayer key back clicked");
    exit(0);
}

请提供帮助。

如果游戏场景扩展了CCLayer类-

void GameScene:: keyBackClicked(void) {
    CCDirector::sharedDirector()->end();

    #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
        exit(0);
    #endif
}
我认为先结束导演,然后退出是很重要的

void GameScene:: keyBackClicked(void) 
{
    CCLOG("cclayer key back clicked");
    exit(0);
}
还启用

this->setKeyPadEnable(true);

通过调用
this->setKeyPadEnable(true)启用键盘

重写onKeyReleased方法:

void GameScene::onKeyReleased(EventKeyboard::KeyCode keyCode, cocos2d::Event *event)
{
    // Back button pressed
    if (keyCode == EventKeyboard::KeyCode::KEY_BACKSPACE) {
        Director::getInstance()->end();
        exit(0);
    }
}

只有当您的类(游戏场景)从CCLayer继承时,keyBackClicked才有效,否则它不起作用。从你们的问题来看,我认为你们从CCScene继承了你们的类,而不是从CClayer继承的,这就是为什么后退按钮键不起作用的原因。
您还可以在Cocos2dxGLSurfaceView.java中处理函数“KeyDown”中的后退按钮。

CCLayer在onEnter()函数调用中添加委托函数,您可能需要在GameScene::onEnter()中调用CCLayer::onEnter,或者需要将其添加到其他地方

CCLayer::onEnter
//
...
    if (m_bKeypadEnabled)
    {
        pDirector->getKeypadDispatcher()->addDelegate(this);
    }
//
...

请给我们看一下你的代码。据我所知,你所描述的是你需要做什么来支持后退按钮。这是我的codebool游戏场景::init(){if(CCLayer::init()){CCLog(“init”);this->setKeypadEnabled(true);return true;}return false;}void游戏场景::keyBackClicked(void){CCLayer::keyBackClicked();CCLOG(“cclayer key back clicked”);exit(0);}我使用了从cocos builder构建的节点,并将其作为子节点添加到GameSecene类中。这有什么问题吗,我在GameSecene类中没有收到回拨键按下的命令??你使用的是什么版本的Cocos2d-x?是否正确调用GameSecene::init以便在日志中看到“init”消息?如何使用cocos2d-x 3.2实现这一点