--- title: Gamepad.buttons slug: Web/API/Gamepad/buttons translation_of: Web/API/Gamepad/buttons ---
{{APIRef("Gamepad API")}}
Свойство Gamepad.buttons
интерфейса {{domxref("Gamepad") }} возвращает массив, сосотоящий из объектов {{domxref("gamepadButton")}}, представляющие кнопки, представленные на устройстве (геймпаде).
Каждый элемент в массиве равен 0 если кнопка не нажата, и не-нуль (обычно 1.0) если нажата. Каждый объект {{domxref("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); };
Массив из объектов {{domxref("gamepadButton")}}
Specification | Status | Comment |
---|---|---|
{{SpecName("Gamepad", "#dom-gamepad-buttons", "Gamepad.buttons")}} | {{Spec2("Gamepad")}} | Initial definition |
{{Compat("api.Gamepad.buttons")}}