Gamepad - 定义了一个单独的游戏手柄或其他控制器
Gamepad
是 Gamepad API 的接口,定义了一个单独的游戏手柄或其他控制器,允许访问按下的按钮,轴位置和 ID。
Gamepad 对象可以通过以下两种方式之一返回:通过 gamepadconnected
和 gamepaddisconnected
事件的 gamepad
属性,或在任何位置通过获取 Navigator.getGamepads()
方法返回的数组。
属性
Gamepad.axes
只读
一个数组,表示设备上存在轴的控件(例如模拟摇杆)。
Gamepad.buttons
只读
一个 gamepadButton
对象数组,表示设备上的按钮。
Gamepad.connected
只读
一个布尔值,指示游戏手柄是否仍然连接到系统。
Gamepad.displayId
只读
返回关联的 VRDisplay
的 VRDisplay.displayId
(如果相关) - 游戏手柄控制所显示场景的 VRDisplay
。
Gamepad.id
只读
一个 DOMString
,包含有关控制器的标识信息。
Gamepad.index
只读
一个整数,自动递增,对于当前连接到系统的每个设备都是唯一的。
Gamepad.mapping
只读
一个字符串,指示浏览器是否已将设备上的控件重新映射到已知布局。
Gamepad.timestamp
只读
一个 DOMHighResTimeStamp
,表示最后一次更新该游戏手柄的数据。
Gamepad 的实验扩展
以下接口在 Gamepad Extensions 规范中定义,并提供对触觉反馈和 WebVR 控制器姿势信息等实验性功能的访问。
Gamepad.hand
只读
一个枚举,用于定义控制器握在哪个手中,或者最有可能保留在哪个手中。
Gamepad.hapticActuators
只读
包含 GamepadHapticActuator
对象的数组,每个对象代表控制器上可用的触觉反馈硬件。
Gamepad.pose
只读
一个 GamepadPose
对象,表示与 WebVR 控制器相关的姿势信息(例如,它在 3D 空间中的位置和方向)。
实例
window.addEventListener("gamepadconnected", function(e) {
console.log("游戏手柄 %d:%s 连接成功。有 %d 个按钮,%d 个轴。",
e.gamepad.index, e.gamepad.id,
e.gamepad.buttons.length, e.gamepad.axes.length);
});
规范
规范 | 状态 | 备注 |
---|---|---|
Gamepad Gamepad 的定义 |
工作草案 | 初始定义 |
WebVR 1.1 displayId 的定义 |
编者的草案 | 定义了 Gamepad.displayId 属性。 |
Gamepad Extensions Gamepad extensions 的定义 |
编者的草案 | 定义了 Gamepad 的实验扩展 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 |
35 21 — 34 webkit |
支持 |
29 24 — 28 |
不支持 |
22 15 — 21 webkit |
不支持 |
Gamepad() constructor |
35 | 12 |
29 24 — 28 |
不支持 | 22 | 不支持 |
axes |
35 21 — 34 webkit |
12 |
29 24 — 28 |
不支持 |
22 15 — 21 webkit |
不支持 |
buttons |
35 21 — 34 webkit |
12 |
29 24 — 28 |
不支持 |
22 15 — 21 webkit |
不支持 |
connected |
35 21 — 34 webkit |
12 |
29 24 — 28 |
不支持 |
22 15 — 21 webkit |
不支持 |
displayId |
支持1 | 15 | 563 | 不支持 | 未知 | 未知 |
hand |
不支持 | 15 | 支持4 | 不支持 | 不支持 | 不支持 |
hapticActuators |
不支持 | 15 | 支持4 | 不支持 | 不支持 | 不支持 |
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 |
不支持 |
mapping |
35 21 — 34 webkit |
12 |
29 24 — 28 |
不支持 |
22 15 — 21 webkit |
不支持 |
pose |
不支持 | 15 | 支持4 | 不支持 | 不支持 | 不支持 |
timestamp |
35 21 — 34 webkit |
12 |
29 24 — 28 |
不支持 |
22 15 — 21 webkit |
不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 不支持 |
35 21 — 34 webkit |
支持 | 32 | 未知 |
22 15 — 21 webkit |
不支持 |
Gamepad() constructor |
不支持 | 35 | 支持 | 32 | 未知 | 22 | 不支持 |
axes |
不支持 |
35 21 — 34 webkit |
支持 | 32 | 未知 |
22 15 — 21 webkit |
不支持 |
buttons |
不支持 |
35 21 — 34 webkit |
支持 | 32 | 未知 |
22 15 — 21 webkit |
不支持 |
connected |
不支持 |
35 21 — 34 webkit |
支持 | 32 | 未知 |
22 15 — 21 webkit |
不支持 |
displayId |
不支持 | 支持2 | 未知 | 未知 | 未知 | 未知 | 未知 |
hand |
不支持 | 不支持 | 不支持 | 不支持 | 未知 | 不支持 | 不支持 |
hapticActuators |
不支持 | 不支持 | 不支持 | 不支持 | 未知 | 不支持 | 不支持 |
id |
不支持 |
35 21 — 34 webkit |
支持 | 32 | 未知 | 不支持 | 不支持 |
index |
不支持 |
35 21 — 34 webkit |
支持 | 32 | 未知 | 不支持 | 不支持 |
mapping |
不支持 |
35 21 — 34 webkit |
支持 | 32 | 未知 |
22 15 — 21 webkit |
不支持 |
pose |
不支持 | 不支持 | 不支持 | 不支持 | 未知 | 不支持 | 不支持 |
timestamp |
不支持 |
35 21 — 34 webkit |
支持 | 32 | 未知 |
22 15 — 21 webkit |
不支持 |
1. 仅适用于 Chrome 的实验版本的桌面(其他版本在调用 Navigator.getVRDisplays()
时不会返回任何设备)。
2. 目前仅由 Google Daydream 支持。
3. 目前,默认情况下仅启用 Windows 支持。Firefox Nightly 提供 Mac 支持。
4. Firefox Nightly 和 Beta 版本 55 及更高版本默认启用该标志。