Gamepad.buttons
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since маÑÑ 2017 г..
СвойÑÑво Gamepad.buttons инÑеÑÑейÑа Gamepad возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив, ÑоÑÑоÑÑий из обÑекÑов gamepadButton, пÑедÑÑавлÑÑÑие кнопки, пÑедÑÑавленнÑе на ÑÑÑÑойÑÑве (геймпаде).
ÐаждÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² маÑÑиве Ñавен 0 еÑли кнопка не нажаÑа, и не-нÑÐ»Ñ (обÑÑно 1.0) еÑли нажаÑа. ÐаждÑй обÑÐµÐºÑ gamepadButton ÑодеÑÐ¶Ð¸Ñ Ð´Ð²Ð° паÑамеÑÑа: pressed и value:
- СвойÑÑво
pressed- boolean индикаÑоÑ, показÑваÑÑий, нажаÑа ли кнопка (true) или Ð½ÐµÑ (false). - СвойÑÑво
value- ÑиÑло Ñ Ð¿Ð»Ð°Ð²Ð°ÑÑей ÑоÑкой, показÑваÑÑÐ°Ñ ÑÑÐµÐ¿ÐµÐ½Ñ Ð½Ð°Ð¶Ð°ÑÐ¸Ñ Ð½Ð° аналоговÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ (как ÑÑиггеÑÑ Ð½Ð° Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑовÑеменнÑÑ Ð³ÐµÐ¹Ð¼Ð¿Ð°Ð´Ð°Ñ ). ÐнаÑение ноÑмализованное в диапазоне 0.0 â 1.0, где 0.0 ÑказÑваеÑ, ÑÑо кнопка не нажаÑа, а 1.0 - ÑÑо нажаÑа полноÑÑÑÑ.
СинÑакÑиÑ
readonly attribute GamepadButton[] buttons;
ÐÑимеÑ
ÐÑиведÑннÑй код взÑÑ Ð¸Ð· моего (авÑоÑа ÑÑаÑÑи) демо Gamepad API button (Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÐоÑмоÑÑеÑÑ Ð´ÐµÐ¼Ð¾, и поÑмоÑÑеÑÑ Ð¸ÑÑ
одники на GitHub). Ðажно â в Chrome Navigator.getGamepads необÑ
одимо ÑÑÑановиÑÑ Ð¿ÑеÑÐ¸ÐºÑ webkit, и знаÑÐµÐ½Ð¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ бÑдÑÑ Ð¿ÑедÑÑавлÑÑÑ Ð¸Ð· ÑÐµÐ±Ñ Ð¼Ð°ÑÑив дÑобнÑÑ
ÑиÑел, Ñогда как в 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 = window.requestAnimationFrame(gameLoop);
}
ÐнаÑение
ÐаÑÑив из обÑекÑов gamepadButton
СпеÑиÑикаÑии
| Specification |
|---|
| Gamepad > # dom-gamepad-buttons > |