位置: 编程技术 - 正文

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构建发布)

  • 采购材料的进项税
  • 合同甲方乙方收钱付钱涉及什么税金
  • 减免增值税如何结转
  • 资源税应该如何计算
  • 申请退还增量留抵税额的条件包括
  • 资产总额增长幅度怎么算
  • 其他应付款和其他应付款可以重分类
  • 税务报表的利润表
  • 已认证的专票发票在哪里
  • 产品样品送样流程
  • 银行存款没有期初余额的总账怎么填
  • 纳税人如何申请享受税收减免优惠
  • 怎么设置存货科目
  • 定额备用金制度有哪些
  • 税控系统技术维护费抵税怎么申报
  • 应收账款折扣怎么计算
  • 银行发放执行款多久到账
  • 高危职业人身意外险
  • 固定资产出租后还要折旧吗
  • 公司在走注销流程被起诉了怎么办
  • 出口收取佣金要开发票吗?
  • 涂料厂生产销售的涂料要交消费税吗
  • 补充医疗保险报销流程
  • 汽车厂家金融贴息 是贴利息的还是贴车价
  • 产业政策鼓励类
  • 原材料盘亏计入
  • 其他应收款的二级科目有备用金和老板名可以吗?
  • 王者荣耀英雄印花衣服哪里批发
  • 合伙企业必须有什么并以其作为企业法律基础
  • navapp.exe - navapp是什么进程文件 作用是什么
  • win10蓝牙共享网络给手机
  • vue 大屏可视化设计 开源
  • 计提坏账准备的公式
  • 缴纳房产税需要扣除折旧吗
  • 企业购买银行理财
  • 专家评审费发放新规定2023
  • uniapp跨域解决方案
  • 一阶段目标检测算法
  • php array search
  • 房屋租赁发票如何免税
  • 进项发票无法取消怎么办
  • 企业应付职工薪酬
  • python怎么查看文件路径
  • 车补贴是要缴纳增值税吗
  • 增值税普通发票查询
  • 车保险名称
  • 增值税加计抵减政策10%和15%
  • 购置环保设备一次性扣除
  • 加权平均发计算公式
  • 企业年度所得税怎么算
  • 用党委的经费买房可以吗
  • 转出未交增值税借方余额表示什么
  • 帮人家开税票对自己生意有影响么
  • 科目余额表如何看
  • 如何理解预付年金终值期数和系数和记忆方法
  • 企业实缴资本如何查
  • 快递费专票可以报销吗
  • 现金支出业务的流程步骤包括
  • 设立明细账的目的
  • mssql查找备注(text,ntext)类型字段为空的方法
  • sql批量导出数据
  • 资源管理器操作教程
  • 重装网卡驱动win11
  • linux ...
  • remupd.exe - remupd是什么进程 有什么用
  • centos7安装软件包命令
  • 英文xp系统中文语言包
  • linux fdb表
  • win7系统关闭防火墙怎么关闭
  • linux如何打包tar.gz
  • win7关闭右下角操作中心
  • linux就要这样学
  • js字符串includes
  • jquery 插件编写
  • android物理按键对应的key
  • 如何使用朋友的山姆卡
  • jquery教程与例子
  • 贵州电子税务局怎么登录
  • 下设机构和内设的区别
  • 大连市网上税务申报平台
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设