Oneshot Gems
立即玩

游戏开发者指南

使用单指针模型而不丢失输入细节

支持鼠标、触摸屏和触控笔的浏览器游戏可以使用 Pointer Events 作为通用输入模型。这种抽象能减少重复的事件处理,但不代表所有设备的行为都相同。确定哪些设备差异会影响游戏机制,并且只在确有帮助时使用事件中的pointerId和类型。

本页内容

有意跟踪每个活动指针

对于简单的拖动,在 pointerdown 时保存 pointerId,并且只在该指针保持活动状态时更新。指针捕获可确保指针移出游戏元素的边界后,后续移动和释放事件仍会发送给该元素。分别处理 pointerup 和 pointercancel,并在两种结束路径中清除状态,避免手势中断后游戏卡住。

不要假设只有一个指针,除非设计限制输入。第二根手指、笔或鼠标可以产生另一个pointerId。如果游戏支持一次主动拖动,则可以预见地忽略其他指针,而不是让它们覆盖第一个拖动。

当设备类型很重要时选择

PointerEvent 为触摸、笔和鼠标需要不同处理的情况公开了pointerType。例如,绘图机制可以使用笔压力,而菜单按钮应该接受任何主指针。避免仅仅为了重新创建单独的事件系统而在设备类型上进行分支;它添加了测试路径,但没有改善玩家的交互。

浏览器可能会在指针输入后触发兼容性的鼠标事件,因此不要通过两套事件系统重复处理同一操作。设备在支持范围内时,分别测试鼠标、触摸和触控笔。MDN 介绍了指针捕获、指针标识符,以及指针事件与鼠标事件之间的关系。

关于⁨游戏的指针事件⁩的常见问题

指针事件使鼠标和触摸相同吗?

它们共享一个事件模型,但属性和用户期望仍然可能不同。仅当游戏机制有特定于设备的具体需求时,才使用pointerType 或其他事件详细信息。

游戏什么时候应该使用指针捕获?

当拖动中的指针离开元素的命中区域后,游戏仍需继续接收移动和释放事件时,使用指针捕获。清理时释放捕获,并处理取消事件。

延伸阅读

发现信息过时了? 报告需要更正的内容

继续玩下去。

免费浏览器游戏,随时等你开玩。发现喜欢的游戏,让它成为你的下一个最爱。

跟随好奇心探索