Gamepad

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

Gamepad APIGamepad 接口,定义了一个独立的游戏手柄或其他控制器,允许访问控制器的信息,譬如按钮按下的状态、坐标输入的位置。游戏手柄或其他控制器,允许访问如按钮按下,和 ID 等信息。

Gamepad 对象有两种方式返回值:通过 gamepadconnectedgamepaddisconnected 事件的 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.hand 只读

一个枚举项,定义了控制器是用哪只手拿着的,或最可能是哪只手拿着的。

Gamepad.hapticActuators 只读

一个包含 GamepadHapticActuator 对象的数组,其中表示控制器上可用的触觉反馈硬件。

Gamepad.pose 只读 实验性

一个表示 WebVR 控制器姿态方位信息的 GamepadPose 对象 (比如其在 3D 空间中的位置和方向)。

示例

js
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,
  );
});

规范

Specification
Gamepad
# gamepad-interface
Gamepad Extensions
# partial-gamepad-interface

浏览器兼容性

BCD tables only load in the browser

参见