cocos2d-x的触摸消息分发机制

cocos2d-x的消息分发和大部分的引擎有点区别,优点和缺点都很明显。

一般的分发思路都会和zorder有一定关系,同样屏幕位置的响应元素,离用户近的会屏蔽离用户远的元素的响应,即zorder值大的屏蔽zorder值小的。cocos2d-x则是由touch priority来决定的,这个和zorder是完全独立的两套体系。好处是可以比较灵活的调整响应元素的优先级,坏处是开发者需要自己控制各个响应元素的touch priority,需要做一些代码的处理以及前期的优先级规划。touch priority值越小,响应元素的响应优先级越高。这个和zorder刚好相反。

触摸消息分发还有个重要的方面就是消息响应后该触摸消息是不是就不会再传递下去,cocos2d-x中需要自己控制消息是否响应后是否会传递下去。

如果一个CCTouchDelegate被添加至CCTouchDispatcher时,如果设置bSwallowsTouches为true,则当该CCTouchDelegate所在响应元素的ccTouchBegan返回为true时,则触摸消息响应之后就会被吞掉。反之则能继续传递下去。

而且cocos2d-x的消息分发并不会看touch是否发生在响应元素的响应区域范围内与否,只根据priority顺序来传递。例如button无论多小,只要优先级够高,总能最早响应到touch消息。

这套机制我觉得还是做层简单的封装,touch响应优先级基于zorder,响应区域反应基于响应元素响应区域范围,是否吞掉消息则取决于元素本身。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值