Gamepad API - 访问和响应来自游戏手柄和其他游戏控制器的信号的方法
游戏手柄 API 是一种让开发人员以简单、一致的方式访问和响应来自游戏手柄和其他游戏控制器的信号的方法。它包含三个接口、两个事件和一个专业功能,以响应游戏板的连接和断开,并访问有关游戏手柄本身的其他信息,以及当前按下了哪些按钮和其他控件。
接口
Gamepad
表示连接到计算机的游戏手柄 / 控制器。
GamepadButton
表示已连接控制器之一上的按钮。
GamepadEvent
表示与游戏手柄相关的触发事件的事件对象。
实验性游戏手柄扩展
GamepadHapticActuator
表示控制器中的硬件,旨在为用户提供触觉反馈(如果可用),最常见的是振动硬件。
GamepadPose
在 WebVR 控制器的情况下,表示控制器的姿势(例如 3D 空间中的位置和方向)。较新的 WebXR 标准不使用此方法。
另请参阅游戏手柄接口的扩展,了解允许您访问上述信息的功能。
其他接口的扩展
Navigator
Navigator.getGamepads()
Navigator
对象的扩展,返回一组 Gamepad
对象,每个连接表示一个游戏手柄。
Window
事件
Window.ongamepadconnected
表示将在游戏手柄连接时运行的事件处理程序(当 gamepadconnected
事件触发时)。
Window.ongamepaddisconnected
表示将在游戏手柄断开连接时运行的事件处理程序(当 gamepaddisconnected
事件触发时)。
教程和指南
规范
规范 | 状态 | 备注 |
---|---|---|
Gamepad Extensions | 编者的草案 | Defines the Experimental Gamepad extensions. |
Gamepad The Gamepad API specification 的定义 |
工作草案 | 初始定义 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 35 21 — 34 webkit | 12 | 29 24 — 28 | 不支持 | 22 15 — 21 webkit | 10.1 |
axes | 35 21 — 34 webkit | 12 | 29 24 — 28 | 不支持 | 22 15 — 21 webkit | 10.1 |
buttons | 35 21 — 34 webkit | 12 | 29 24 — 28 | 不支持 | 22 15 — 21 webkit | 10.1 |
connected | 35 25 — 34 webkit | 12 | 29 24 — 28 | 不支持 | 22 15 — 21 webkit | 10.1 |
displayId | 支持 — 801 | 15 | 553 644 | 不支持 | 未知 | 不支持 |
hand | 不支持 | 15 — 79 | 支持5 | 不支持 | 不支持 | 不支持 |
hapticActuators | 不支持 | 15 — 79 | 支持5 | 不支持 | 不支持 | 不支持 |
id | 35 21 — 34 webkit | 12 | 29 24 — 28 | 不支持 | 22 15 — 21 webkit | 不支持 |
index | 35 21 — 34 webkit | 12 | 29 24 — 28 | 不支持 | 22 15 — 21 webkit | 10.1 |
mapping | 35 21 — 34 webkit | 12 | 29 24 — 28 | 不支持 | 22 15 — 21 webkit | 10.1 |
pose | 不支持 | 15 — 79 | 支持5 | 不支持 | 不支持 | 不支持 |
timestamp | 35 21 — 34 webkit | 12 | 29 24 — 28 | 不支持 | 22 15 — 21 webkit | 10.1 |
vibrationActuator | 68 | 79 | 不支持 | 不支持 | 55 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 不支持 | 35 25 — 34 webkit | 未知 | 32 | 未知 | 22 14 — 21 webkit | 10.3 |
axes | 不支持 | 35 25 — 34 webkit | 未知 | 32 | 未知 | 22 14 — 21 webkit | 10.3 |
buttons | 不支持 | 35 25 — 34 webkit | 未知 | 32 | 未知 | 22 14 — 21 webkit | 10.3 |
connected | 不支持 | 35 25 — 34 webkit | 未知 | 32 | 未知 | 22 14 — 21 webkit | 10.3 |
displayId | 不支持 | 支持 — 802 | 未知 | 55 | 未知 | 未知 | 不支持 |
hand | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
hapticActuators | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
id | 不支持 | 35 25 — 34 webkit | 未知 | 32 | 未知 | 22 14 — 21 webkit | 不支持 |
index | 不支持 | 35 25 — 34 webkit | 未知 | 32 | 未知 | 22 14 — 21 webkit | 10.3 |
mapping | 不支持 | 35 25 — 34 webkit | 未知 | 32 | 未知 | 22 14 — 21 webkit | 10.3 |
pose | 不支持 | 不支持 | 未知 | 不支持 | 未知 | 不支持 | 不支持 |
timestamp | 不支持 | 35 25 — 34 webkit | 未知 | 32 | 未知 | 22 14 — 21 webkit | 10.3 |
vibrationActuator | 不支持 | 68 | 未知 | 不支持 | 未知 | 48 | 不支持 |
1. 仅适用于 Chrome 的实验版本的桌面(其他版本在调用 Navigator.getVRDisplays()
时不会返回任何设备)。
2. 目前仅由 Google Daydream 支持。
3. 在 Firefox 55 中启用了 Windows 支持。
4. 在 Firefox 64 中启用了 macOS 支持。
5. 该标志在 Firefox Nightly 和 Beta 版本 55 及更高版本中默认启用。
相关链接
- Ted Mielczarek 和 Robert Nyman 的 Gamepad API
- 简单的 API 演示页面(源码)