在头文件中增加函数
virtual void keyBackClicked();//android返回键
virtual void keyMenuClicked();//android菜单键
在init()函数中增加语句this->setIsKeypadEnabled(true);//android 返回键和菜单键支持
//this->setKeypadEnabled(true);//android 返回键和菜单键支持 这个才是正确的
然后实现这两个函数就行了
1》监听返回键和菜单键
StartMenu.h
classStartMenu:public cocos2d::CCLayer
{
public:
virtualbool init();
virtualvoid keyBackClicked();//监听Android 返回键
virtualvoid keyMenuClicked();//监听Android 菜单键
};
StartMenu.cpp
boolStartMenu::init()
{
this->setKeypadEnabled(true);
...
}
voidStartMenu::keyBackClicked (){
...
}
voidStartMenu::keyMenukClicked (){
...
}
2》监听home键
AppDelegate.cpp类中的方法可以实现
void AppDelegate::applicationDidEnterBackground()
void AppDelegate::applicationWillEnterForeground()
如何在Cocos2dx中处理Android os的设备的Menu和Back案件的响应处理;
其实很简单,步骤如下:
1. 在需要响应的.h 中添加如下两个虚函数:
1 2 | virtual void keyBackClicked(); //Android 返回键 virtual void keyMenuClicked(); //Android 菜单键 |
2. .cpp类中实现如上两个函数即可,如下,Himi这里测试使用,World是个Layer
1 2 3 4 5 6 7 | void World::keyBackClicked(){ CCLog( "Android- KeyBackClicked!" ); } void World::keyMenuClicked(){ CCLog( "Android- keyMenuClicked!" ); } |
3.初始化的时候记得开启: this->setIsKeypadEnabled(true);