cocos2d-x里面touch事件传递机制

本文探讨了cocos2d-x中touch事件传递机制,特别是在同一层中后添加的对象先响应事件的情况。重点介绍了CCDirector的添加委托方法以及CCStandardTouchDelegate和CCTargetedTouchDelegate的区别,后者允许吃掉事件。文章提到了解决精灵(sprite)事件穿透问题的方法,并建议通过设置优先级和返回值来控制事件传递。
摘要由CSDN通过智能技术生成

         昨天项目里面碰到了一个问题,spriteA的点击事件穿透了,导致spriteA没响应,而spriteA下面的spriteB响应了,其中spriteA和spriteB的优先级同为0。

我当时就有些奇怪,这是由于两者的ccTouchBegan的返回值为false,所以事件传递下去了。

        要想touch事件不往下传递,1、CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true); 2、ccTouchBegan的返回值为true。

        这里面还有一个关键点:在同一个layer中是后add的对象先接受touch响应,再根据其设置判断是否往下传递touch响应,而不是根据其depth来按顺序接受touch响应。

同理,在同一个scene中后add的layer先接受touch响应,再根据其设置判断是否往下传递touch响应,而不是根据该scene中各个layer的depth值来按顺序接受touch响应。

        这解释可以结合上一篇文章里面的例子一起看,cocos2d-x中继承CCMenu定义自己的MyMenu,这个是解决优先级的问题 . 

 

 

      下面是我在网上看到别人的一些总结,也可以看看:

      原文地址:Cocos2d中Touch事件总结:CCStandradTouch,CCTargetedTo

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值