cocos2dx20升级到cocos2dx 317后监听android设备返回键 virtual void keyBackClicked 提示 Declaration of keyBackClicked overrides a final function
在Cocos2d-x 3.17版本中,keyBackClicked()方法已经被标记为final,表示不能被子类重写。因此,当你尝试在3.17版本中重写keyBackClicked()方法时会出现上述错误。
要解决这个问题,你可以使用新的键盘事件监听方法onKeyReleased()来替代keyBackClicked()方法。首先,你需要在AppDelegate.cpp中添加以下代码:
bool AppDelegate::applicationDidFinishLaunching()
{
// ...
// 添加键盘事件监听器
auto keyboardListener = EventListenerKeyboard::create();
keyboardListener->onKeyReleased = CC_CALLBACK_2(AppDelegate::onKeyReleased, this);
Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(keyboardListener, 1);
// ...
}
void AppDelegate::onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event)
{
if (keyCode == EventKeyboard::KeyCode::KEY_BACK)
{
// 处理返回键事件
}
}
然后,在你的场景或层中,你可以重写onKeyReleased()方法来处理按键事件,例如:
bool MyScene::init()
{
// ...
// 添加键盘事件监听器
auto keyboardListener = EventListenerKeyboard::create();
keyboardListener->onKeyReleased = CC_CALLBACK_2(MyScene::onKeyReleased, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(keyboardListener, this);
// ...
}
void MyScene::onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event)
{
if (keyCode == EventKeyboard::KeyCode::KEY_BACK)
{
// 处理返回键事件
}
}
使用上述方法,你可以在Cocos2d-x 3.17版本中监听并处理Android设备的返回键事件
原文地址: https://www.cveoy.top/t/topic/igJU 著作权归作者所有。请勿转载和采集!