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