大佬教程收集整理的这篇文章主要介绍了Cocos2d-x android使用onKeyDown监听返回键实现二次返回退出,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
原文地址:http://50vip.com/390.html
@H_489_2@ 一般的游戏或者软件,都会@R_674_5313@d版本上做退出程序的功能,一般的实现方式有两种: @H_489_2@ 1.点击返回按键,弹出确认是否退出; @H_489_2@ 2.点击返回,toast提示再次点击退出程序。public Boolean onKeyDown(final int pKeyCode,final KeyEvent pKeyEvent)@H_801_16@
@H_489_2@ 实现对用户按键的监听,但是将代码加入到cocos2d-x生成的Java代码中的AppActivity中,发现根本不起作用,没法监听到用户的按键操作,找官方api文档,发现: @H_489_2@ public BooleanonKeyDown(int keyCode,KeyEventevent) @H_489_2@ @H_489_2@ Since:API Level 1 @H_489_2@ Called when a key was pressed down and not handled by any of the views inside of the activity.So,for example,key presses while the cursor is inside a TextView will not trigger the event (unless it is a navigation to another object) because TextView handles its own key presses. @H_489_2@ If the focused view didn't want this event,this method is called. @H_489_2@ 这段文字我需要强调的是红色标记部分,翻译的意思是:当用户按下一个按键的时候调用,但是前提是这个事件没有被其他的任何views监听并处理。 @H_489_2@ 因此不难得知,在cocos2d-x游戏中,在实现的onKeyDown方法监听不到返回键,是因为这个返回键事件已经被其他的onKeyDown处理掉了,具体是谁呢?看cocos2d-x的android版本代码(framework/scocos2d-x/cocos/2d/platform/android/java/src/org/cocos2dx/lib/Cocos2dx/GLSurfaceView.java)。其中实现了onKeyDown方法: @H_489_2@@Override public Boolean onKeyDown(final int pKeyCode,final KeyEvent pKeyEvent) { switch (pKeyCodE) { case KeyEvent.KEYCODE_BACK: case KeyEvent.KEYCODE_MENU: this.queueEvent(new Runnable() { @Override public void run() { Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleKeyDown(pKeyCodE); } }); return true; default: return super.onKeyDown(pKeyCode,pKeyEvent); } }@H_801_16@
这个里面,按键KeyEvent.KEYCODE_BACK被监听了,只要在这里不作处理即可(return false),改成如下代码:
@H_489_2@@Override public Boolean onKeyDown(final int pKeyCode,final KeyEvent pKeyEvent) { switch (pKeyCodE) { case KeyEvent.KEYCODE_BACK: return false; case KeyEvent.KEYCODE_MENU: this.queueEvent(new Runnable() { @Override public void run() { Cocos2dxGLSurfaceView.this.mCocos2dxRenderer.handleKeyDown(pKeyCodE); } }); return true; default: return super.onKeyDown(pKeyCode,pKeyEvent); } }@H_801_16@ 这样在你自己的cocos2d-x游戏Activity中就可以监听返回键了,在AppActivity中重写onKeyDown方法,如下:
private long mkeyTime = 0; public Boolean onKeyDown(int keyCode,KeyEvent event) { //二次返回退出 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); }@H_801_16@ 然后运行游戏, 点击返回键试试,有没有Toast?大佬总结
以上是大佬教程为你收集整理的Cocos2d-x android使用onKeyDown监听返回键实现二次返回退出全部内容,希望文章能够帮你解决Cocos2d-x android使用onKeyDown监听返回键实现二次返回退出所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。