GamepadButton - 定义了游戏手柄或其他控制器的单个按钮
GamepadButton
接口定义了游戏手柄或其他控制器的单个按钮,允许访问控制设备上可用的不同类型按钮的当前状态。
通过查询 Gamepad
接口的 buttons
属性返回的数组的值,可以返回 GamepadButton
对象。
注意:Firefox Gecko 28 及更高版本上面的情况;访问该属性时,Chrome 和早期版本的 Firefox 则会返回一个 double 值数组。
属性
GamepadButton.value
只读
一个双精度值,用于表示模拟按钮当前状态,例如许多现代游戏手柄上的触发器。这些值标准化为范围 0.0-1.0,其中 0.0 表示未按下的按钮,1.0 表示完全按下的按钮。
GamepadButton.pressed
只读
一个布尔值,指示按钮当前是按下(true
)还是未按下(false
)。
实例
以下代码取自我的 Gamepad API 按钮演示(您可以在 Github 上查看在线演示和查找源代码。)注意代码在 Chrome 中,Navigator.getGamepads
需要使用 webkit
前缀,按钮值存储为 double 值数组,而在 Firefox 中,Navigator.getGamepads
不需要前缀,按钮值存储为 GamepadButton
对象的数组;我们需要访问的 GamepadButton.value
或 GamepadButton.pressed
属性,具体取决于它们的按钮类型。
function gameLoop() {
if(navigator.webkitGetGamepads) {
var gp = navigator.webkitGetGamepads()[0];
if(gp.buttons[0] == 1) {
b--;
} else if(gp.buttons[1] == 1) {
a++;
} else if(gp.buttons[2] == 1) {
b++;
} else if(gp.buttons[3] == 1) {
a--;
}
} else {
var gp = navigator.getGamepads()[0];
if(gp.buttons[0].value > 0 || gp.buttons[0].pressed == true) {
b--;
} else if(gp.buttons[1].value > 0 || gp.buttons[1].pressed == true) {
a++;
} else if(gp.buttons[2].value > 0 || gp.buttons[2].pressed == true) {
b++;
} else if(gp.buttons[3].value > 0 || gp.buttons[3].pressed == true) {
a--;
}
}
ball.style.left = a*2 + "px";
ball.style.top = b*2 + "px";
var start = rAF(gameLoop);
};
规范
规范 | 状态 | 备注 |
---|---|---|
Gamepad GamepadButton 的定义 |
工作草案 | 初始定义 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 |
35 21 — 34 webkit |
支持 |
29 24 — 28 |
不支持 |
22 15 — 21 webkit |
不支持 |
pressed |
35 21 — 34 webkit |
12 |
29 24 — 28 |
不支持 |
22 15 — 21 webkit |
不支持 |
value |
35 21 — 34 webkit |
12 |
29 24 — 28 |
不支持 |
22 15 — 21 webkit |
不支持 |
touched |
未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 不支持 | 支持 | 支持 | 32 | 未知 | 不支持 | 不支持 |
pressed |
不支持 | 支持 | 支持 | 32 | 未知 | 不支持 | 不支持 |
value |
不支持 | 支持 | 支持 | 32 | 未知 | 不支持 | 不支持 |
touched |
未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 |