Gamepad - 定义了一个单独的游戏手柄或其他控制器

GamepadGamepad API 的接口,定义了一个单独的游戏手柄或其他控制器,允许访问按下的按钮,轴位置和 ID。

Gamepad 对象可以通过以下两种方式之一返回:通过 gamepadconnectedgamepaddisconnected 事件的 gamepad 属性,或在任何位置通过获取 Navigator.getGamepads() 方法返回的数组。

属性

Gamepad.axes 只读

一个数组,表示设备上存在轴的控件(例如模拟摇杆)。

Gamepad.buttons 只读

一个 gamepadButton 对象数组,表示设备上的按钮。

Gamepad.connected 只读

一个布尔值,指示游戏手柄是否仍然连接到系统。

Gamepad.displayId 只读

返回关联的 VRDisplayVRDisplay.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 及更高版本默认启用该标志。

相关链接