Gamepad

Baseline 广泛可用 *

此特性已得到良好确立,可跨多种设备和浏览器版本使用。自 2017 年 3 月起,所有浏览器均支持此特性。

* 此特性的某些部分可能存在不同级别的支持。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

Gamepad 接口是 Gamepad API 的一部分,它定义了一个单独的游戏手柄或其他控制器,允许访问按钮按下、轴位置和 ID 等信息。

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

注意: 游戏手柄功能的可用性因平台和控制器的不同组合而异。即使控制器支持某个功能(例如,触觉反馈),平台也可能不支持该控制器上的该功能。

实例属性

Gamepad.axes 只读

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

Gamepad.buttons 只读

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

Gamepad.connected 只读

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

Gamepad.displayId 只读 已弃用 非标准

返回关联的 VRDisplayVRDisplay.displayId(如果相关)——游戏手柄正在控制其显示场景的 VRDisplay

Gamepad.hand 只读 实验性

一个枚举,定义了控制器正握在哪个手中,或者最有可能握在哪个手中。

Gamepad.hapticActuators 只读 实验性

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

Gamepad.vibrationActuator 只读

一个 GamepadHapticActuator 对象,代表控制器上可用的触觉反馈硬件。

Gamepad.id 只读

一个字符串,包含有关控制器的标识信息。

Gamepad.index 只读

一个整数,会自动递增,以确保连接到系统的每个设备都具有唯一性。

Gamepad.mapping 只读

一个字符串,指示浏览器是否已将设备上的控件映射到已知的布局。

Gamepad.pose 只读 实验性

一个 GamepadPose 对象,表示与 WebVR 控制器相关的姿态信息(例如,它在三维空间中的位置和方向)。

Gamepad.timestamp 只读

一个 DOMHighResTimeStamp,表示此游戏手柄数据的最后更新时间。

示例

js
window.addEventListener("gamepadconnected", (e) => {
  console.log(
    "Gamepad connected at index %d: %s. %d buttons, %d axes.",
    e.gamepad.index,
    e.gamepad.id,
    e.gamepad.buttons.length,
    e.gamepad.axes.length,
  );
});

规范

规范
Gamepad
# gamepad-interface
Gamepad 扩展
# partial-gamepad-interface

浏览器兼容性

另见