Gamepad.buttons
特性为
Gamepad
interface returns an array of
gamepadButton
objects representing the buttons present on the device.
Each entry in the array is 0 if the button is not pressed, and non-zero (typically 1.0) if the button is pressed. Each
gamepadButton
object has two properties:
pressed
and
value
:
pressed
property is a boolean indicating whether the button is currently pressed (
true
) or unpressed (
false
).
value
property is a floating point value used to enable representing analog buttons, such as the triggers on many modern gamepads. The values are normalized to the range 0.0 – 1.0, with 0.0 representing a button that is not pressed, and 1.0 representing a button that is fully pressed.
readonly attribute GamepadButton[] buttons;
The following code is taken from my Gamepad API button demo (you can
view the demo live
,和
find the source code
on Github.) Note the code fork — in Chrome
Navigator.getGamepads
needs a
webkit
prefix and the button values are stores as an array of double values, whereas in Firefox
Navigator.getGamepads
doesn't need a prefix, and the button values are stored as an array of
GamepadButton
objects; it is the
GamepadButton.value
or
GamepadButton.pressed
properties of these we need to access, depending on what type of buttons they are. In this simple example I've just allowed either.
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);
};
An array of
gamepadButton
对象。
| 规范 | 状态 | 注释 |
|---|---|---|
|
Gamepad
The definition of 'Gamepad.buttons' in that specification. |
工作草案 | 初始定义 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
buttons
|
Chrome
35
|
Edge 12 |
Firefox
29
|
IE No |
Opera
22
|
Safari 10.1 | WebView Android No |
Chrome Android
35
|
Firefox Android 32 |
Opera Android
22
|
Safari iOS 10.3 |
Samsung Internet Android
4.0
|
完整支持
不支持
用户必须明确启用此特征。
要求使用供应商前缀或不同名称。