第一种方法:直接继承android系统函数,调用之后杀死游戏进程。
修改src目录下,工程文件.java文件
修改之前:
public class eoeFlappyBird extends Cocos2dxActivity{
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
public Cocos2dxGLSurfaceView onCreateView() {
Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
// eoeFlappyBird should create stencil buffer
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
return glSurfaceView;
}
static {
System.loadLibrary("cocos2dcpp");
}
}
public class eoeFlappyBird extends Cocos2dxActivity{
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
public Cocos2dxGLSurfaceView onCreateView() {
Cocos2dxGLSurfaceView glSurfaceView = new backgame(this); //此处修改
// eoeFlappyBird should create stencil buffer
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
return glSurfaceView;
}
//此处修改
public Cocos2dxGLSurfaceView onCreateGLSurfaceView() {
return new backgame(this);
}
static {
System.loadLibrary("cocos2dcpp");
}
}
//添加继承类
class backgame extends Cocos2dxGLSurfaceView {
public backgame(Context context) {
super(context);
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
// exit program when key back is entered
if (keyCode == KeyEvent.KEYCODE_BACK) {
new AlertDialog.Builder(getContext())
.setTitle(R.string.app_title) //R.string.app_title 是在 res目录中 string.xml配置的 <string name="app_title">提示</string> 不能重名
.setMessage(R.string.quitContext)
.setPositiveButton(R.string.yes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
android.os.Process
.killProcess(android.os.Process
.myPid());
}
}).setNegativeButton(R.string.no, null).show();
}
return super.onKeyDown(keyCode, event);
}
}
第二种方法:
1. 在需要响应的.h 中添加如下两个虚函数:
virtual void keyBackClicked();//Android 返回键
virtual void keyMenuClicked();//Android 菜单键
2. .cpp类中实现如上两个函数即可,如下,
void HelloWorld::keyBackClicked()
{
CCLOG("back btn is clicked");
CCMessageBox("backbtn", "backbtn");
CCDirector::sharedDirector()->end();
}
void HelloWorld::keyMenuClicked()
{
CCLOG("menu btn is clicked");
CCMessageBox("menubtn", "menubtn");
}
3.初始化的时候记得开启: this->setKeypadEnabled(true);