Cocos2D v3.x中关于重叠触摸层优先级的问题

简介:

在Cocos2D v2.x版本中可以通过以下方法设置本层的触摸优先级:

[[CCDirector sharedDirector].touchDispatcher addTargetedDelegate:self priority:-256 swallowsTouches:YES];

不过以上方法在Cocos2d v3.x中已经不复存在了.

总的来说在v3.x中触摸优先级问题变得更加简单了,它直接和不同层的z-order相关.

越靠近屏幕,即z序越大的层越先响应触摸事件,而z序越小的层越后响应触摸事件.在每个层的触摸事件里,如果调用[super xxx]方法则表示在本层触摸事件处理完成后,也将事件传递给下一层.如果不调用super方法,则事件会在本层被吞没,不会传递到下一层.

注意这里的层不一定指的是CCLayer类,因为在Cocos2d v3.x中任何可以响应触摸事件的节点都可以被当做层来用,比如CCNode.

举个例子,比如最上面是UI层UILayer,中间是Level层LevelLayer,最下方是MainScene层,比如它们的z序分别如下:

UILayer.zOrder = 200;
LevelLayer.zOrder = 100;
MainScene.zOrder = 0;

假设以上3个层都开启了触摸属性,否则是无论如何也收不到触摸事件的.

那么用户在按下屏幕一点时,UILayer层首先得到消息,接下来是LevelLayer层,最后是MainScene层.以上的前提是前两个层都调用super方法将事件传递给了下一层.

还有一点值得注意的是,如果某一层的z序很低,是无法单独提高该层子层节点的z序的.

比如现在LevelLayer层的z序为-100,所以现在变成MainScene层先捕获消息了(不考虑其他层),因为它的z序没有变还是0.现LevelLayer上还有一个Player子节点,如果将其z序设为100的话Player层能否在MainScene层之前捕获消息呢?

LevelLayer.zOrder = -100;
Player.zOrder = 100;
MainScene.zOrder = 0;

答案是:不可以!因为Player父节点的zOrder比MainScene层低,不管Player的z序被设置为多高都不可以在MainScene之前捕获消息.

相关文章
|
7月前
|
Kubernetes 持续交付 数据库
阿里云ACK+GitLab企业级部署实战教程
GitLab 是一个功能强大的基于 Web 的 DevOps 生命周期平台,整合了源代码管理、持续集成/持续部署(CI/CD)、项目管理等多种工具。其一体化设计使得开发团队能够在同一平台上进行代码协作、自动化构建与部署及全面的项目监控,极大提升了开发效率和项目透明度。 GitLab 的优势在于其作为一体化平台减少了工具切换,高度可定制以满足不同项目需求,并拥有活跃的开源社区和企业级功能,如高级权限管理和专业的技术支持。借助这些优势,GitLab 成为许多开发团队首选的 DevOps 工具,实现从代码编写到生产部署的全流程自动化和优化。
|
9月前
|
机器学习/深度学习 人工智能 开发者
【AI系统】昇思 MindSpore 关键特性
本文介绍华为自研AI框架昇思MindSpore,一个面向全场景的AI计算框架,旨在提供统一、高效、安全的平台,支持AI算法研究与生产部署。文章详细阐述了MindSpore的定位、架构、特性及在端边云全场景下的应用优势,强调其动静态图统一、联邦学习支持及高性能优化等亮点。
358 7
【AI系统】昇思 MindSpore 关键特性
|
11月前
|
小程序 Python
利用Python编程提取身份证的信息
利用Python编程提取身份证的信息
212 2
|
10月前
|
Web App开发 算法 应用服务中间件
nginx开启局域网https访问
【10月更文挑战第22天】为了调试WebRTC功能,需要在局域网内搭建HTTPS协议。具体步骤包括:在已部署Nginx和安装OpenSSL的环境中生成私钥、证书签名请求和自签名证书;将生成的文件放置到Nginx的证书目录并修改Nginx配置文件,最后重启Nginx服务。注意,自签名证书不受第三方机构认可,如需正式使用,需向CA申请签名。
493 2
CH340外围电路
CH340外围电路介绍
|
8月前
|
JSON 监控 API
京东商品列表 API 接口系列(京东 API)
京东商品列表API接口为开发者提供获取店铺内商品详细信息的功能,包括名称、价格、库存、图片、ID、销量等。通过HTTP GET请求并包含必要参数(如店铺ID、API密钥),可获取JSON格式的商品列表数据,适用于展示、库存管理、价格监控等场景。示例代码展示了使用Python调用该接口的方法,返回的数据包含状态码、商品总数、分页信息及具体商品详情。
|
10月前
|
Prometheus 监控 Kubernetes
监控工具
监控工具
233 12
|
Ubuntu Linux
ubuntu linux配置bond 网卡绑定 多个bond配置多网关
ubuntu linux配置bond 网卡绑定 多个bond配置多网关
991 1
|
存储 监控 关系型数据库
MySQL - 系统函数和自定义使用详解
MySQL - 系统函数和自定义使用详解
261 0
|
弹性计算 Cloud Native Android开发
阿里云ARM服务器架构c8y、g8y和r8y处理器采用倚天Yitian 710
阿里云ARM服务器架构c8y、g8y和r8y处理器采用倚天Yitian 710,阿里云自研CPU处理器倚天Yitian 710,2.75 GHz主频,搭载倚天710处理器的云服务器ECS有计算型c8y、通用型g8y和内存型r8y,云服务器吧分享阿里云自研CPU处理器倚天Yitian 710性能测评:
343 0