输入与交互:命中、拖动、滚动和事件穿透
依据:Cocos Creator 3.8 节点事件、Button 与 ScrollView 文档。本文为交互设计及原理说明;微信真机未验证。
看见某个东西,不代表点中了它
绘制层决定哪里有像素,命中层决定哪里接受操作。一个透明按钮仍可能挡住下方内容,一个小图标也可以拥有更大的命中区域。原生 Canvas 绘制图像后不会自动生成完整控件树,通常要自己维护区域、层级和手势;引擎 UI 系统提供了其中很多机制。
点击点应转换到目标节点的坐标系再判断。矩形、圆形和不规则形状的检测方式不同;透明像素是否可点击也是产品规则,不应从图片外观默默推断。
一次触摸是一段过程
开始、移动、结束和取消组成一次手势。按下时先记录触摸标识与起点;移动超过阈值时进入拖动;在合法区域结束才认定为点击。系统取消、切后台和节点被移除时也要清理状态。视觉反馈可以立即发生,业务提交则等合法动作成立。
在背包中,手指先压在物品上,接着向上拖动。最终应滚动列表,而不是购买物品。Cocos ScrollView 提供对子节点事件的取消处理,但具体业务仍需与点击和拖拽逻辑配合;自己写的监听也要正确响应取消。
弹窗为什么会点穿
全屏暗色图片只是视觉元素。要阻止点击背景,需为覆盖层配置正确的输入阻挡规则,并检查渲染顺序、节点范围和事件传播。关闭弹窗时也要避免当前手势的后半段被下层按钮接住。复杂界面可以维护“当前交互层”,优先路由给最上层有效面板。
常见失败:拖动物品时列表也跟着动
明确手势仲裁:按住后拖出才进入物品拖拽,或使用特定把手启动拖拽。拖拽开始后由同一触摸拥有者处理,结束时再把屏幕位置映射到目标槽位。对于第二根手指,要明确忽略、多点协作或独立跟踪的规则。
交互检查并不只点一次
测试快速连点、按住移出、移回、系统取消、滚动中点击、弹窗关闭瞬间点击、页面切换和多点触摸。对网络按钮,将提交状态与动画状态分离,并在服务端设计幂等规则。实验入口:按钮反馈、背包列表。完整案例见 按钮 与 背包。
官方来源与适用范围
资料核查日期:2026-10-30。文中的案例参数与图解用于教学;目标项目应按所用版本及平台重新验证。