在头文件中增加函数 
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);

05-04 09:11