比如:Game.h   Game.cpp

头文件Game.h中定义:

void onKeyReleased(EventKeyboard::KeyCode keyCode,Event * pEvent);

Game.cpp文件里实现:

auto listener = EventListenerKeyboard::create(); //和回调函数绑定 

listener->onKeyReleased = CC_CALLBACK_2(Game::onKeyReleased,this); //加入到事件分发器中 

Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,this); 

//返回键退出

void Game::onKeyReleased(EventKeyboard::KeyCode keyCode,Event * pEvent)
{
Director::getInstance()->end();
}

//注意,此方法仅仅支持Android平台下,在windows平台下编译会出现错误。建议用windows平台编译的时候把此方法注销掉。

//上述方法仅仅点击一次返回键既能够退出。假设须要2次退出,能够採用以下这种方法:

void Game::onKeyReleased(EventKeyboard::KeyCode keyCode,Event * pEvent)
<span style="white-space:pre">	</span>//把keycode的枚举值转换成int 手机的返回键键值为6
<span style="white-space:pre"> </span>auto x = (int)_keyCode;
<span style="white-space:pre"> </span>//假设点击返回键一次
<span style="white-space:pre"> </span>if (x == 6)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>//记录点击次数的变量,在头文件内声明并赋值0
<span style="white-space:pre"> </span>keydown++;
<span style="white-space:pre"> </span>//假设点击两次则退出游戏
<span style="white-space:pre"> </span>if (keydown == 2)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>Director::getInstance()->end();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>//否则就显示文字。“再按一次退出”
<span style="white-space:pre"> </span>else
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>//添加的一个精灵图片。就是显示的“再按一次退出游戏”
<span style="white-space:pre"> </span>auto label1 = Sprite::create("again.png");
<span style="white-space:pre"> </span>addChild(label1);
<span style="white-space:pre"> </span>//在给文字加一个消失动画和一个回调函数
<span style="white-space:pre"> </span>//动画消失以后回调函数删除该Node,并把keydown赋值0
<span style="white-space:pre"> </span>//假设动画没有消失而又点击了返回键则直接退出游戏
<span style="white-space:pre"> </span>//两次点击返回键的时间间隔为0.1+1.5=1.6,这个时间能够自己设置
<span style="white-space:pre"> </span>auto fadeout = FadeOut::create(0.1f);
<span style="white-space:pre"> </span>label1->runAction(Sequence::create(DelayTime::create(1.5f),fadeout, CallFunc::create(CC_CALLBACK_0(againExit::oncallback, this, label1)), NULL));
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
}

Cocos3.0 的android返回键功能实现的更多相关文章

  1. quick-cocos2d-x android返回键监听并实现原生退出对话框

    这两天最终闲了一下,就顺手又把quick捡起来又学了学,一直都认为quick比cocos2dx那套lua绑定要方便很多,今天试了下android返回键的监听,还是挺好弄的,所以就有了这篇. 首先说明一 ...

  2. Html5 监听拦截Android返回键方法详解

    浏览器窗口有一个history对象,用来保存浏览历史. 如果当前窗口先后访问了三个网址,那么history对象就包括三项,history.length属性等于3. history对象提供了一系列方法, ...

  3. vue 定义全局函数,监听android返回键事件

    vue 定义全局函数,监听android返回键事件 方法一:main.js 注入(1)在main.js中写入函数Vue.prototype.changeData = function (){ aler ...

  4. ionic监听android返回键(实现“再按一次退出”功能)

    在android平台上的app,在主页面时经常会遇到"再按一次退出app"的功能,避免只按一下返回键就退出app提升体验优化. 1.这个功能需要我们用到ionic提供的regist ...

  5. Android 返回键的处理

    多网友不明确怎样在Android平台上捕获Back键的事件.Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台.而回到桌面的尴尬情况,在Android上有两种方法来获取该 ...

  6. Android返回键

    感谢大佬:https://www.cnblogs.com/qiluboy/p/5308310.html Android中back键和home键的区别: back键 Android的程序无需刻意的去退出 ...

  7. android 返回键 操作

    cocos2dx项目移植到android平台上对于 android手机返回键,主菜单键等键的相关操作,本篇详细对返回键做个简单的介绍说明, 不足不对之处,请同猿们指出. 首先在主activity下,即 ...

  8. Android 返回键双击退出程序

    /** * 菜单.返回键响应 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == K ...

  9. ionic android返回键

    每次点击返回键只会执行一个事件, 在自定义事件中要控制条件不满足时实行原默认动作. 如果只在一个view中监控, 还需要及时注销事件. http://www.jianshu.com/p/b567cc6 ...

随机推荐

  1. es服务

    #!/bin/bash #chkconfig:2345 20 90 #description: elastic service #processname: elastic ROOT_PATH=/es5 ...

  2. [PHP]如何使用Mobile_Detect来判断访问网站的设备:安卓,平板,电脑

    Mobile_Detect 是一个轻量级的开源移动设备(手机)检测的 PHP Class, 它使用 User-Agent 中的字符串,并结合 HTTP Header,来检测移动设备环境. 这个设备检测 ...

  3. SqlBulkCopy-从 bcp 客户端收到一个对 colid 1 无效的列长度

    经过研究,问题是因为tatatable中的colid列1的数据字段长度超过了数据表中定义的字段长度. 解决方法就是将数据库该字段的长度增大问题就解决了.

  4. java线程总结(1/5)

    前言 闲来无事正值面试,看面试中有线程之问题,特此总结一番. 正文 一.线程和进程的区别:1.每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销.2.线程可以看成时轻量级的进程 ...

  5. Java死锁举例

    死锁: 在多线程竞争使用共享资源的情况下.就有可能出现死锁的情况.比方,当一个线程等待还有一个线程所持有的锁时.那个线程又可能在等待第一个线程所持有的锁.此时.这两个线程会陷入无休止的相互等待状态.这 ...

  6. [XCode A] - 编程相关问题

    1.如何在XCode中新建文件夹 如果在xcode工程中new group,只是在视觉效果上分好了几个文件夹,方便分类管理,但在finder中并不会创建新的文件夹,在硬盘目录还是所有文件都并列在一个文 ...

  7. Visual studio之C# 串口通讯SerialPort

    背景 App需要串口进行通讯,在此做个记录和简要说明. 正文 添加命名空间 using System.IO.Ports; 实例化串口 SerialPort serialPortO = new Seri ...

  8. Drupal的错误和异常处理

    Drupal在配置阶段的最开始就设置了自己的错误处理器和异常处理器: function _drupal_bootstrap_configuration() { set_error_handler('_ ...

  9. LaTeX 图片插入

    一般格式: \begin{figure} \centering \includegraphics[scale=0.2]{Figure211.png} \caption{In the case of a ...

  10. Ubuntu 安装配置 JDK+Tomcat+Nginx

    安装配置JDK 下载安装 # 下载: wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=acc ...