cocos2d-x有个问题,即使暂停CCScene运行,触摸仍然有效,有些菜单和按钮仍然会被触发。

所以有的时候我们要手动屏蔽触摸,尤其是在弹出计费画面的,或者使用一些本平台自带控件的时候。

做法有几种:

第一种方案是:每一个继承自CCLayer的类都可以关闭触摸,使用这个函数

  1. setIsTouchEnabled(false);

在暂停sence时,我们只需要关闭那些主要的CCLayer即可,也就是当前CCScene的主CCLayer和相关的CCMenu等。

但这种方法,有时候会造成莫名其妙的crash。调试发现,如果在同一个frame的同一个函数中,先关闭再恢复触摸,就可能造成crash。crash的原因是引擎在派发触摸事件时,发现响应对象的列表为空,直接触发断言。

第二种方案是:写一个CCLayer,把所有优先级调至最高,并直接覆盖到当前CCSence主CCLayer上。

经过试验,这种方式非常简单有效,重用性也很高。

  1. class NoTouchLayer : public cocos2d::CCLayer{
  2. public:
  3. // Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
  4. virtual bool init();
  5. // implement the "static node()" method manually
  6. LAYER_NODE_FUNC(NoTouchLayer);
  7. virtualvoid registerWithTouchDispatcher();
  8. virtualbool ccTouchBegan (cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
  9. virtualvoid ccTouchMoved (cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
  10. virtualvoid ccTouchEnded (cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
  11. };


  1. bool NoTouchLayer::init(){
  2. if (!CCLayer::init() )
  3. {
  4. return false;
  5. }
  6. setIsTouchEnabled(true);
  7. return true;
  8. }
  9. void NoTouchLayer::registerWithTouchDispatcher(){
  10. CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, numeric_limits <int> ::min() , true);//使用int最小值做最高优先级,并且吞掉事件true
  11. CCLayer::registerWithTouchDispatcher();
  12. }
  13. bool NoTouchLayer::ccTouchBegan (CCTouch *pTouch, CCEvent *pEvent){
  14. return true;
  15. }
  16. void NoTouchLayer::ccTouchMoved (CCTouch *pTouch, CCEvent *pEvent){
  17. }
  18. void NoTouchLayer::ccTouchEnded (CCTouch *pTouch, CCEvent *pEvent){
  19. }

这个类的使用也很简单,直接addChild,removeChild即可。注意清理,注意addChild的时候要给一个足够大的z轴深度值。

本文转自 老G 51CTO博客,原文链接:http://blog.51cto.com/goldlion/845269,如需转载请自行联系原作者

cocos2d-x学习笔记番外篇05:如何快速屏蔽触摸相关推荐

  1. TikZ学习笔记番外篇: 使用tikzcd包绘制交换图

    什么是交换图 映射的合成关系, 用图表示出来, 称为交换图. 怎么绘制 有很多方法可以绘制, 都是基于LaTeX\LaTeXLATE​X 的, 这里我使用了TikZ\mathrm{T}i\mathrm ...

  2. Rust学习日记番外篇——代码写诗

    Rust学习日记番外篇--代码写诗 中秋节即将来临啦~~提前祝大家月饼节快乐.今天看到了掘金的文章,有个代码写诗的活动,那我就小露一手了. 0x01 选定诗句 在掘金有下面几句诗可选. 举头望明月,低 ...

  3. unity学习笔记-番外(3d模型的动作设计以及导入-2018版)材质的替换以及动作穿模(自己的手穿模到自己的其他部位)

    unity学习笔记-番外(3d模型的动作设计以及导入) 动作设计白嫖方法 方法一:小k网 需要注意的地方 方法二:mixamo 需要注意的地方 材质的替换 一 动作的穿模 2021.5.13更新 -2 ...

  4. 【TDA2x学习】番外篇三、VisionSDK开发指南笔记

    1.介绍 Vision Software Development Kit (SDK)是一种多处理器.多通道的用于TI家族ADAS SoCs的软件开发平台.该软件框架允许用户创建不同的ADAS应用程序数 ...

  5. 【TDA2x学习】番外篇一、TDA2x工程学习手记

    据振宇师兄说,TDA2HGBRQABCQ1是低配版TDA2x,对于EVE并没有4个,只有2个! 可运行在任意核上的Link:Dup link,Null link,Syn link等可以运行在任何核上 ...

  6. unity学习笔记-番外(接入百度和轻语的AI智能接口实现语音识别和语音播放)

    接入百度和轻语的AI智能接口实现语音识别和语音播放 语音识别 思路 代码 语音合成 思路 总结 语音识别 思路 先在百度和轻语申请接口,获得appkey和secretkey(这是为了获得鉴权,也就是t ...

  7. h5 php js实验总结,H5学习_番外篇_PHP数据库操作

    1. 文件操作 1.1 打开关闭文件 fopen() resource fopen ( string filename, string mode [, bool use_include_path [, ...

  8. php h5读写数据库,H5学习_番外篇_PHP数据库操作

    php //打开文件 $rh = fopen('PHP_3.txt', 'r+'); //读取文件,第一个參数是文件句柄,第二个是读取方式 //计算文件大小(字节) $num = filesize(' ...

  9. 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记番外(1) - JLinkScript妙用

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记番外篇之JLinkScript妙用. JLinkScript 文件是配套 J-Link 调试器使用的脚本,这个脚本适 ...

最新文章

  1. jenkins运行日志时间与linux,Jenkins 用户文档(运行多个步骤)
  2. RHEL/CentOS 下安装yum源地址汇集---不定期更新
  3. linux操作系统分析实验—基于mykernel的时间片轮转多道程序实现与分析
  4. 代码审计之Catfish CMS v4.5.7后台作者权限越权两枚+存储型XSS一枚
  5. 数字图像处理资料集锦(Python、C++、Matlab)
  6. [长流支流]的专栏--《金质打印通》、《WebMIS.NET快速开发平台》,MIS/ERP开发利器...
  7. 信用贷款常见问题应对话术
  8. Delphi下实现全屏快速找图找色 二、矩阵遍历
  9. python assert_python assert使用说明
  10. 忆当年!董明珠处罚困难员工后自掏腰包补偿:制度必须坚决执行
  11. Linux 0.11内核分析03:系统调用
  12. CentOS 6.2安装配置LAMP服务器(Apache+PHP5+MySQL)
  13. linux su - 用户名,在Linux中,su命令 (切换用户)
  14. 如何对接GN EDI系统?
  15. ssm项目之第三方QQ登陆
  16. 冬训成果何在?林丹无缘新赛季首冠状态成迷
  17. 生死看淡,不服就GAN(七)----用更稳定的生成模型WGAN生成cifar
  18. 写一个求平方根的函数求一个整数的平方根因为函数类型是整形所以平方根的结果是整数,例如5,的平方根是2,而不是2.3...
  19. HashMap初始化长度设置大小
  20. DRF之View、APIView以及GenericAPIView

热门文章

  1. 财务模块多组织,GL, SLA, SOB, COA, BSV, CCID, LE 概念的简单介绍
  2. sqlplus 小记
  3. shell 实现txt转换成html
  4. [转载]学习java30条基本的概念
  5. UNION ALL vs UNION
  6. VS2010~2015番茄助手VA_X 2073 重新安装时遇到问题The security key for this program currently stored on your system
  7. 大数据之-Hadoop3.x_MapReduce_WordCount编写_Reducer---大数据之hadoop3.x工作笔记0090
  8. Disruptor本地线程队列_实现线程间通信---线程间通信工作笔记001
  9. ES6新特性_变量的解构赋值---JavaScript_ECMAScript_ES6-ES11新特性工作笔记006
  10. 微信公众号介绍_以及注册订阅号---微信公众号开发工作笔记0001