[iuud8]cocos2dx3.2项目捕捉android的返回键

</pre>最近一不小心就整天在搞android了。。。。。<p></p><p>然后各种磕磕绊绊的,</p><p>上午把项目捕捉到安卓手机的返回键事件给实现了下,具体如下:</p><p>安卓手机项目的退出有两种方法:</p><p>1.双击返回键退出:</p><p></p><pre name="code" class="java">if (keyCode == KeyEvent.KEYCODE_BACK) {
	        if ((System.currentTimeMillis() - mkeyTime) > 2000) {
	            mkeyTime = System.currentTimeMillis();
	            Toast.makeText(this, "再按一次退出游戏", Toast.LENGTH_LONG).show();
	        } else {
	            finish();
	            System.exit(0);
	        }
	        return false;
	    }
	    return super.onKeyDown(keyCode, event);
	}

2:通过弹出对话框选择退出:

		public boolean onKeyDown(int keyCode, KeyEvent event) {  
	        if (keyCode == KeyEvent.KEYCODE_BACK) {  
	            dialog();  
	            return true;  
	        }  
	        return true;  
	    }  
		
		protected void dialog() {  
	        AlertDialog.Builder builder = new AlertDialog.Builder(this);  
	        builder.setMessage("确定要退出吗?");  
	        builder.setTitle("提示");  
	        builder.setPositiveButton("确认",  
	        new android.content.DialogInterface.OnClickListener() {  
	            @Override  
	            public void onClick(DialogInterface dialog, int which) {  
	                dialog.dismiss();  
	                //AccoutList.this.finish();  
	                //System.exit(1);  
	                android.os.Process.killProcess(android.os.Process.myPid());  
	            }  
	        });  
	        builder.setNegativeButton("取消",  
	        new android.content.DialogInterface.OnClickListener() {  
	            @Override  
	            public void onClick(DialogInterface dialog, int which) {  
	                dialog.dismiss();  
	            }  
	        });  
	        builder.create().show();  
	    }

两种方法任选一个即可,把它加入到这个类中:

但是,仅仅做这些,会发现返回键还是不可用!

通过查找官方api,会发现

public boolean onKeyDown(int keyCode, KeyEvent event) 
这个函数会在用户按下某个按键时候调用,但前提是这个事件没有被监听处理!!

因此,返回键不可用,是因为在cocosdx中,已经对安卓进行了返回键的监听处理。

在eclipse中,打开:cocos2d/cocos/platform/android/java/src/org/cpcps2dx/lib/Cocos2dxGLSurfaceView.java

找到这个函数:

	public boolean onKeyDown(final int pKeyCode, final KeyEvent pKeyEvent) {
		switch (pKeyCode) {
			case KeyEvent.KEYCODE_BACK:
				Cocos2dxVideoHelper.mVideoHandler.sendEmptyMessage(Cocos2dxVideoHelper.KeyEventBack);
			case KeyEvent.KEYCODE_MENU:
			case KeyEvent.KEYCODE_DPAD_LEFT:
			case KeyEvent.KEYCODE_DPAD_RIGHT:
			case KeyEvent.KEYCODE_DPAD_UP:
			case KeyEvent.KEYCODE_DPAD_DOWN:
			case KeyEvent.KEYCODE_ENTER:
			case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
			case KeyEvent.KEYCODE_DPAD_CENTER:
				this.queueEvent(new Runnable() {
					@Override
					public void run() {
						Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleKeyDown(pKeyCode);
					}
				});
				return true;
			default:
				return super.onKeyDown(pKeyCode, pKeyEvent);
		}
	}

case KeyEvent.KEYCODE_BACK:
				Cocos2dxVideoHelper.mVideoHandler.sendEmptyMessage(Cocos2dxVideoHelper.KeyEventBack);
修改为:

case KeyEvent.KEYCODE_BACK:
				return false;
这样,自己写的安卓返回键监听就可以使用了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值