此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Gamepad

基线
广泛可用
*

自 2017年3月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

* 此特性的某些部分的支持程度可能有所不同。

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

Gamepad 对象有两种方式返回值:通过 gamepadconnected 和 gamepaddisconnected 事件的 gamepad 属性,或者在任意位置抓取 Navigator.getGamepads() 方法返回的数组。

属性

Gamepad.axes 只读

一个表示控制器设备上存在的坐标轴的数组 (比如控制器摇杆)。

Gamepad.buttons 只读

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

Gamepad.connected 只读

一个表示控制器是否仍然连接着系统的布尔值。

Gamepad.displayId 只读

返回与 VRDisplay 相关的 VRDisplay.displayId (如果有相关) — 控制器所控制的 VRDisplay 场景。

Gamepad.id 只读

一个包含着控制器标识信息的 String。

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

规范

规范
Gamepad
# gamepad-interface
Gamepad Extensions
# partial-gamepad-interface

浏览器兼容性

参见