文档章节

Cocos2d-x android使用onKeyDown监听返回键实现二次返回退出

暖冰
 暖冰
发布于 2015/12/16 17:38
字数 280
阅读 410
收藏 0

framework/scocos2d-x/cocos/2d/platform/android/java/src/org/cocos2dx/lib/Cocos2dx/GLSurfaceView.java)。其中实现了onKeyDown方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@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);
    }
}

这个里面,按键KeyEvent.KEYCODE_BACK被监听了,只要在这里不作处理即可(return false),改成如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@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);
    }
}

这样在你自己的cocos2d-x游戏Activity中就可以监听返回键了,在AppActivity中重写onKeyDown方法,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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);
}

然后运行游戏, 点击返回键试试,有没有Toast?

© 著作权归作者所有

暖冰
粉丝 58
博文 124
码字总数 116908
作品 1
美国
程序员
私信 提问
预览文章: android使用webview时按后退退出的问题

使用webview打包美女图片站点http://www.gg4493.cn,代码都好了,具体如下 public class MainActivity extends ActionBarActivity { protected void onCreate(Bundle savedInstanceState) {......

yangjiyue0520
2017/11/02
9
0
Android游戏开发之处理按键的响应方式(二十二)

Android游戏开发之处理按键的响应方式 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:hhttp://blog.csdn.net/xys289187120/article/details/6685378 1.onKeyDown 方法 onKe...

晨曦之光
2012/03/07
382
1
Android游戏开发之处理按键的响应方式(二十二)

Android游戏开发之处理按键的响应方式 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:hhttp://blog.csdn.net/xys289187120/article/details/6685378 1.onKeyDown 方法 onKe...

彭博
2012/03/09
85
0
监听返回键提示对话框,并杀死当前程序进程,为什么我点击退出是当前的Activity.

监听返回键提示对话框,并杀死当前程序进程,为什么我点击退出是当前的Activity. public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getKeyCode() == KeyEvent.KEYCODE_BA...

努力de俺
2014/04/18
388
1
Activity那些不得不说的事

上次说了Activity内置dialog管理的一些API,虽然没什么反应。。。不过。。。我还是要坚持挖掘Activity里那些不为大家所知,但是却很好用的接口的。 public void onBackPressed() 在认识它之前...

大凉龙雀
2013/06/03
217
1

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
今天
6
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
9
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
5
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部