Cocos Creator多子节点触控选择实例与原理解析
183 浏览量
更新于2024-09-01
收藏 100KB PDF 举报
本文档主要介绍了如何在Cocos Creator中处理触控事件,特别是当需要选择多个子节点时的应用实例。作者在开发小游戏的过程中遇到了触控事件的问题,经过深入研究和实践,总结出以下关键知识点:
1. **触控事件基础**:触控事件是针对游戏引擎中的节点发生的,这意味着每个节点都有自己的触控处理能力。在Cocos Creator中,触控事件的传播遵循冒泡机制,但并不是所有层级都参与,只有同一层级的子节点之间的冒泡是有效的,即父子节点可以相互响应,但隔代(祖孙)则不会。
2. **事件传播问题**:当父节点不响应触控事件时,通常是因为有子节点遮挡了父节点。解决方案是让遮挡的子节点也监听触控事件,这样父节点就能接收到事件。
3. **坐标系统**:触控位置是相对于整个游戏视口(Canvas)的绝对坐标,而节点的位置则是相对于其父节点的相对坐标。开发者需要灵活转换这两个坐标系以便于处理触控操作。
4. **事件顺序**:`touchstart`事件表示触控开始,但并不能立即确定哪个节点被点击,因为一个节点被触控后,需要等到其`touchend`事件结束,其他节点才能有机会响应。因此,判断是否框选中需要等待所有可能的响应结束后进行。
5. **框选判断**:作者提到采用简单的方法来判断是否框选中,即检查触控起点和终点构成的矩形与节点矩形是否有重叠。这通常涉及到计算和比较两个矩形的边界坐标。
6. **数值比较**:在实现框选或其他需要判断数值范围的功能时,关键在于找出给定数值与范围边界的最小值和最大值,然后进行比较。
**核心代码示例**:
文章的核心代码展示了如何在Cocos Creator中创建一个类继承自`cc.Component`,其中包含两个属性:`poker`用于存储子节点,`cardMask`用于定义一个遮罩层。在这个场景下,可能会有以下代码片段:
```javascript
cc.Class({
extends: cc.Component,
properties: {
poker: { type: cc.Node },
cardMask: { type: cc.Sprite },
// 其他可能的触控处理方法和变量
touchStartPoint: { type: cc.Vec2, default: null },
touchEndPoint: { type: cc.Vec2, default: null },
},
onTouchStart: function (event) {
this.touchStartPoint = event.globalPosition;
// 开始框选过程
},
onTouchMove: function (event) {
this.touchEndPoint = event.globalPosition;
// 更新框选状态
},
onTouchEnd: function (event) {
let rectStart = this.poker.convertToNodeSpace(this.touchStartPoint);
let rectEnd = this.poker.convertToNodeSpace(this.touchEndPoint);
// 检查框选
// ...
// 更新UI或执行其他操作
},
// 更多触控处理函数...
})
```
这篇文章为Cocos Creator新手提供了如何处理触控事件,尤其是在涉及选择多个子节点的场景中的具体指导,包括事件的传播规则、坐标转换以及如何通过比较坐标判断节点被框选的方法。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2024-11-19 上传
2021-05-31 上传
2018-11-28 上传
点击了解资源详情
weixin_38689338
- 粉丝: 9
- 资源: 974
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器