Gamepad

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

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

属性

Gamepad.axes (en-US) 只读
一个表示控制器设备上存在的坐标轴的数组 (比如控制器摇杆)。
Gamepad.buttons (en-US) 只读
一个 gamepadButton 对象的数组,表示设备上的按键的数组。
Gamepad.connected (en-US) 只读
一个表示控制器是否仍然连接着系统的布尔值。
Gamepad.displayId (en-US) 只读
返回与 VRDisplay 相关的 VRDisplay.displayId (en-US) (如果有相关) — 控制器所控制的 VRDisplay 场景。
Gamepad.id (en-US) 只读
一个包含着控制器标识信息的 DOMString
Gamepad.index (en-US) 只读
一个自增的整形数字,对于当前连接到系统的每一个设备是唯一的。
Gamepad.mapping (en-US) 只读
一个指示浏览器是否被映射到某个已知布局的字符串。
Gamepad.timestamp (en-US) 只读
一个表示上次控制器数据更新时间的 DOMHighResTimeStamp

Gamepad 的实验性扩展

以下接口被定义于 Gamepad Extensions 规范中,且提供了诸如触觉反馈和WebVR控制器姿态方位信息等实验功能的访问。

Gamepad.hand (en-US) 只读
一个枚举项,定义了控制器是用哪只手拿着的,或最可能是哪只手拿着的。
Gamepad.hapticActuators (en-US) 只读
一个包含 GamepadHapticActuator (en-US) 对象的数组,其中表示控制器上可用的触觉反馈硬件。
Gamepad.pose (en-US) 只读
一个表示WebVR控制器姿态方位信息的 GamepadPose 对象(比如其在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
Working Draft Initial defintion
WebVR 1.1
displayId
Draft Defines the Gamepad.displayId (en-US) property.
Gamepad Extensions
Gamepad extensions
Editor's Draft Defines the Experimental extensions to Gamepad

浏览器兼容性

BCD tables only load in the browser

另请参阅