

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 鼠标移动处理
<a name="sdk-mouse-movement"></a>

鼠标移动处理对于在流媒体应用程序中提供响应式和直观的用户体验至关重要。Amazon GameLift Streams 会根据应用程序的光标行为自动优化鼠标输入传输，确保无论光标是隐藏还是可见，鼠标移动都感觉自然。了解 Amazon GameLift Streams 如何处理鼠标事件有助于您设计与流媒体服务无缝配合并提供最佳用户体验的应用程序。

## 鼠标输入模式
<a name="sdk-mouse-input-modes"></a>

Amazon GameLift Streams 使用两种不同的模式将鼠标事件传输到您的应用程序，根据光标可见性自动选择适当的模式：

相对模式  
在相对模式下，鼠标更新以与先前位置的微小增量差异进行传输。此模式非常适合需要精确、连续的鼠标移动跟踪的应用程序，例如第一人称射击游戏 (FPS) 游戏或使用 3D 方向的界面。当操作系统光标隐藏或完全透明时，Amazon GameLift Streams 使用相对模式。

绝对模式  
在绝对模式下，鼠标光标位置以精确的屏幕坐标形式传输。此模式非常适合依赖精确光标定位的应用程序，例如 point-and-click游戏或任何带有可点击元素的用户界面。当操作系统光标可见时，即使您的应用程序显示自定义光标图像，Amazon GameLift Streams 也会使用绝对模式。

这种自动选择可确保不同应用程序类型的最佳性能，而无需手动配置。

## 指针锁
<a name="sdk-pointer-lock"></a>

指针锁定是一项 Web API 功能，它可以在特定元素内捕获鼠标光标，隐藏光标并防止其离开指定区域。对于需要不受限制地移动鼠标来控制摄像机或瞄准，而不会受到可见光标的干扰或无法到达窗口边缘的限制的游戏来说，此功能特别有用。

Amazon GameLift Streams 通过 Web SDK `InputConfiguration` 界面中的`autoPointerLock`属性提供自动指针锁定功能。此功能与 [requestPointerLock API](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestPointerLock) 集成，可提供直观且可感知上下文的鼠标捕获。

### 自动指针锁定行为
<a name="sdk-pointer-lock-behavior"></a>

当应用程序处于全屏模式且远程光标在 GameLift 直播主机上不可见时，Amazon Streams 会自动启用指针锁定。这种行为与常见的游戏开发模式非常吻合：
+ **FPS/TPS 游戏和 3D 方向控制** ——指针会自动锁定，光标被隐藏，从而提供 FPS 游戏必不可少的不受限制的摄像机控制。
+ **Point-and-click 游戏和用户界面控制**-当游戏在菜单交互或策略游戏中使光标可见时，指针保持可见和解锁状态，从而保持预期的用户体验。

### 配置选项
<a name="sdk-pointer-lock-configuration"></a>

该`autoPointerLock`属性接受以下值：

`true`  
当远程光标不可见时，总是会捕获鼠标。

`false`  
无论光标是否可见，都不会捕捉到鼠标。

`'fullscreen'`（默认值）  
只有当视频元素处于全屏模式且远程光标不可见时，才会捕获鼠标。

**重要**  
`autoPointerLock`由于平台限制，在 Safari 浏览器或 iOS 平台上不起作用。

## 最佳实践
<a name="sdk-mouse-best-practices"></a>

要确保流式传输应用程序中的鼠标操作效果最佳，请执行以下操作：
+ **始终全屏直播**-您的应用程序应该已经在全屏模式下运行，才能在我们的服务上正常运行。此外，我们建议使用浏览器支持将直播设置为全屏元素，以获得最佳的最终用户体验。这将有助于避免诸如系统光标和软件光标之间的对齐问题之类的问题。
+ **隐藏相对运动的光标-如果您的应用程序需要相对**的鼠标移动（例如 FPS 风格的摄像机控件或基于拖动的交互），请在这些交互过程中隐藏操作系统的光标。在某些情况下，您可能需要在鼠标向下移动时隐藏光标，然后在鼠标向上移动时再次显示光标。
+ **显示光标进行绝对定位**-当您的应用程序需要精确的光标定位以进行用户界面交互时，请确保操作系统的光标保持可见以启用绝对坐标模式。
+ **测试不同的输入场景**-验证您的应用程序是否正确处理相对鼠标模式和绝对鼠标模式，因为 Amazon GameLift Streams 可能会根据您的光标可见性变化在模式之间切换。
+ **测试不同的窗口模式**-在窗口模式和全屏模式下测试应用程序的鼠标操作（如果适用）。确定哪个`autoPointerLock`设置最适合您的输入配置。