位置: 编程技术 - 正文

cocos2dx 3.2 解决触摸事件中两个按钮同时响应的问题(cocos2d schedule)

编辑:rootadmin

推荐整理分享cocos2dx 3.2 解决触摸事件中两个按钮同时响应的问题(cocos2d schedule),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:cocos2dx 教程,cocos-2dx,cocos-2dx,cocos2dx 4.0,cocos2dx schedule,cocos2d schedule,cocos2dx schedule,cocos2dx 3.17,内容如对您有帮助,希望把文章链接给更多的朋友!

上篇触摸机制讲解中提到过存在两个按钮同时响应的问题。

问题描述cocos2dx 3.2 解决触摸事件中两个按钮同时响应的问题(cocos2d schedule)

我们一般使用EventListenerTouchOneByOne注册触摸事件,但是这里的触摸消息是按顺序依次响应的,当你在屏幕中同时点击了两个按钮(A和B),彼此没有交集,触摸机制会依次触发两次触摸消息,一次按钮A的触摸消息,另一次按钮B的触摸消息。重要的是依次触发消息,每次触摸消息都会执行按钮A和按钮B的回调函数,根据回调函数里面的区域判断当前的触摸消息点击到了哪个按钮。这样按钮A和按钮B的回调函数会各执行两次,即使对每个按钮设置setSwallowTouches(true),也只对点击到按钮的那次触摸消息有作用。因为setSwallowTouches只在onTouchBegan返回true的时候才生效。假设按钮A的触摸优先级高,当处理按钮A的触摸消息时,区域判断返回true,触摸会被吞噬,按钮B不会被触发,但是处理按钮B的触摸消息时,按钮A的区域判断失败,setSwallowTouches不会执行,接着执行按钮B的回调函数。因此,两个按钮同时响应了。再提一点是,android上面是这样的,但是ios上,是不会同时响应两个按钮,这个可能跟操作系统有关吧。。

menu的实现方式

引擎中的Menu类已经对这种情况做了处理,可以参考一下如何下代码,具体思路是在触摸回调中加入一个状态的判定。开始处理一个触摸消息后,在执行onTouchBegan后,一直到onTouchEnd结束调用之前,禁用其他按钮的触摸。

_state 变量就是为了防止按钮同时响应的状态变量,如果当前有按钮不是处在Menu::State::WAITING状态时,就说明有按钮正在响应,不处理当前的触摸消息。但是,这同样会引入一个问题,当一个scene的不同layer中有多个menu呢,那也会导致处于不同的menu的按钮同时响应。规避办法就要看开发者如何设计了,又或者一个scene共同一个menu。。

自定义按钮类的实现方式项目中也有很多自定义按钮类的时候,一般会使用起来会比menu类更方便,更直接。自己封装的按钮类一般都会导致上述问题,尤其是当封装的按钮的种类过多时,要支持.9的,又要支持两张图片合成的,等等。所以这里提供一个解决思路,也是参照menu的实现方式。自定义一个buttonManger单例类,用来做点击的状态判定,当有按钮在执行触摸期间,禁止其他按钮执行,包括menu类型的按钮。 很简单的buttonManager类,都不需要cpp文件,根据m_bIsClickEnable变量来判断当前按钮状态即可。使用方法WWButton是一个按钮基类,只要继承此类,扩展的子类都不用担心按钮同时响应的问题。

【cocos2dx】创建精灵的两种方法 一种为直接引用单张图片,但是这样效率不高,不推荐。第二中方法采用精灵帧的方法,通过工具TexturePacker将纹理打包成.plist文件,然后在进行访问。

cocos2dx 3.2 Http网络连接,curl 库的介绍 cocos2dxHTTP网络连接简介cocos2dx中HTTP网络连接部分主要使用了curl开源库。curl是一个跨平台的库,它可以模拟浏览器请求,模拟表单数据,上传下载,支持

Cocos2dx单击事件优先级实例 boolMyTouchEvent1::init(){if(!Layer::init()){returnfalse;}SizevisibleSize=Director::getInstance()-getVisibleSize();Vec2origin=Director::getInstance()-getVisibleOrigin();Sprite*sp1=Sprite::create(Hello

标签: cocos2d schedule

本文链接地址:https://www.jiuchutong.com/biancheng/372607.html 转载请保留说明!

上一篇:RapidJSON的一些方便操作的宏定义(rapidjson使用)

下一篇:【cocos2dx】创建精灵的两种方法(cocos creator构建发布)

  • 怎么算一般纳税人
  • 借递延所得税资产贷其他综合收益
  • 融资租赁和经营租赁的特点
  • 增值税专用发票和普通发票的区别
  • 筹建期间购买的机械配件
  • 外企餐补标准
  • 建筑业发票可以在备注里加备注么
  • 企业税收滞纳金计入什么科目
  • 关税应纳税额的计算方法包括
  • 一次性年终奖金个税税率表2023
  • 未分配利润的计税基础是
  • 预缴增值税一般计税依据
  • 没有业务来往可以报税吗
  • 天然气的销售需要什么资质
  • 资管新规出台目的
  • 合同违约补偿款需要缴纳增值税吗?
  • 固定成本与变动成本的区别
  • 帐外资产 如何记账
  • 1697509099
  • 工程用的叉车计提折旧记到什么科目?
  • 进口代理流程
  • 临时文件夹无写入权限这是什么原因
  • linux joe
  • linux 分享文件
  • PHP:pg_fetch_all_columns()的用法_PostgreSQL函数
  • 销售机构人员工资属于管理费用吗
  • 销货方开具红票,购货方怎么入账
  • 餐饮企业库存盘点表
  • html怎么引入图片
  • 生产企业一般贸易
  • yarn install报错
  • 微信小程序封掉了怎么办
  • 【swinUnet官方代码测试自己的数据集(已训练完毕)】
  • centos安装epel
  • 库存商品暂估入库金额如何确定
  • 固定资产盘盈、盘亏的账务处理?
  • 外贸企业申报出口退税资料
  • DEDECMSV5.6将软件下载次数直接生成静态
  • 终止经营损益列报 举例
  • 无偿调入固定资产怎么入账
  • 工业企业缴纳增值税吗
  • sqlserver 通用存储过程分页代码(附使用ROW_NUMBER()和不使用ROW_NUMBER()两种情况性能分析)
  • 家电销售的税率
  • 暂估的原材料用不用记原材料明细账
  • 工程施工和工程结算对冲有差额的会计分录
  • 房产税的计算方式
  • 在建工程领用原材料税费怎么处理
  • 怎样暂估成本的会计分录
  • 个税异地缴纳后果
  • 残保金的税收优惠政策
  • 上期留抵税额可以留多久
  • 事业单位公务卡额度多少
  • 派出所报销项目有哪些
  • 跨年红冲收入记在本年度
  • 享受所得税减免优惠的生产性外商投资企业包括
  • 收到厂家返利账务处理
  • mysql如何修改数据库名
  • sqlserver数据库定时任务
  • ubuntu20.04.2安装
  • 进程中svchost
  • macbook imessage
  • u盘制作winpe启动盘
  • starting windows
  • shine.exe - shine是什么进程 有什么用
  • win8.1应用商店
  • linux device driver
  • iphone服务器
  • 低分辨率调高分辨率会模糊吗
  • win10系统怎么刻录光盘?win10刻录光盘详细图文步骤
  • win8上不了网
  • 微信小程序异步回调函数
  • jquery实现原理
  • 环境变量windows
  • jquery onready
  • js中文本框设置的代码
  • unity3d 赛车游戏
  • 交了增值税还用交税吗
  • 税控盘离线开票时间超限是怎么回事
  • 江苏网上税务局官网登录
  • 房地产开发企业土地成交额与去年同期相比增长约
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设