博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法
阅读量:6465 次
发布时间:2019-06-23

本文共 1502 字,大约阅读时间需要 5 分钟。

Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法

首先,在Scene中重载下面两个函数

[cpp]
  1. virtual void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event);  
  2. virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);  
第一个函数在按下时触发,第二个函数在松开是触发。

然后再Scene init的时候写上

[cpp]
  1. setKeyboardEnabled(true);  
或者是
[cpp]
  1. //注册捕捉监听  
  2. auto listenerkeyPad = EventListenerKeyboard::create();  
  3. listenerkeyPad->onKeyReleased = CC_CALLBACK_2(HelloWorld::onKeyReleased, this);  
  4. _eventDispatcher->addEventListenerWithSceneGraphPriority(listenerkeyPad, this);  
当然你也可以同时写,这样就监听了两次,如果你需要的话。。。

我要做的是在5秒内按两次返回键退出,所以我只需要重载onKeyReleased函数即可。下面是函数的具体实现

[cpp]
  1. void HelloWorld::onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event)  
  2. {  
  3.     switch (keyCode)  
  4.     {  
  5.     case cocos2d::EventKeyboard::KeyCode::KEY_BACK:  
  6.         {  
  7.             if(m_IsNeedExit == false)  
  8.             {  
  9.                 m_IsNeedExit = true;  
  10.                 this->scheduleOnce(SEL_SCHEDULE(&HelloWorld::CloseExitSign),5.0f);  
  11.             }  
  12.             else  
  13.             {  
  14.                 menuCloseCallback(nullptr);  
  15.             }  
  16.         }  
  17.     default:  
  18.         break;  
  19.     }  
  20. }  
  21.   
  22. void HelloWorld::menuCloseCallback(Ref* pSender)  
  23. {  
  24. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)  
  25.     MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");  
  26.     return;  
  27. #endif  
  28.   
  29.     Director::getInstance()->end();  
  30.   
  31. #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)  
  32.     exit(0);  
  33. #endif  
  34. }  
  35.   
  36. //定时器回调 退出标志关闭  
  37. void HelloWorld::CloseExitSign(float dt)  
  38. {  
  39.     m_IsNeedExit = false;  
  40. }  

m_IsNeedExit 是类HelloWorld的一个成员变量,在构造函数中会定义为false。

需要注意的是,如果头文件中需要USING_NS_CC;

 

转载于:https://www.cnblogs.com/dudu580231/p/4560384.html

你可能感兴趣的文章
在XenCenter6.2中构建CentOS7虚拟机的启动错误
查看>>
.NET Framework3.0/3.5/4.0/4.5新增功能摘要
查看>>
php中表单提交复选框与下拉列表项
查看>>
熟悉常用的Linux操作
查看>>
面象过程与面象对象
查看>>
谷歌设置支持webgl
查看>>
js的AJAX请求有关知识总结
查看>>
Eclipse添加新server时无法选择Tomcat7的问题
查看>>
nginx 配置https 负载均衡
查看>>
双拓扑排序 HDOJ 5098 Smart Software Installer
查看>>
三分 POJ 2420 A Star not a Tree?
查看>>
36.Node.js 工具模块--OS模块系统操作
查看>>
存储过程报错行提示
查看>>
Leetcode 4 - median-of-two-sorted-arrays
查看>>
ERDAS软件应用(四)遥感影像数据增强
查看>>
修改OBS为仅直播音频
查看>>
完整版:《开源框架实战宝典电子书V1.0.0》内测版下载地址!
查看>>
OCA读书笔记(3) - 使用DBCA创建Oracle数据库
查看>>
CKEditor的使用-编辑文本
查看>>
HDU------checksum
查看>>