diff options
Diffstat (limited to 'files/ru/web/api/gamepadbutton/index.html')
-rw-r--r-- | files/ru/web/api/gamepadbutton/index.html | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/files/ru/web/api/gamepadbutton/index.html b/files/ru/web/api/gamepadbutton/index.html new file mode 100644 index 0000000000..c119ee2401 --- /dev/null +++ b/files/ru/web/api/gamepadbutton/index.html @@ -0,0 +1,85 @@ +--- +title: GamepadButton +slug: Web/API/GamepadButton +translation_of: Web/API/GamepadButton +--- +<div>{{APIRef("Gamepad API")}}</div> + +<div>Интерфейс <code><strong>GamepadButton</strong></code> определяет отдельную кнопку геймпада или другого контроллера, позволяя получить доступ к текущему состоянию различных типов кнопок, доступных на устройстве</div> + +<p>Объект <strong><code>GamepadButton</code></strong> возвращается путем получения любого элемента в массиве <code>buttons</code>, который является свойством интерфейса {{domxref("Gamepad")}}.</p> + +<div class="note"> +<p><strong>Note</strong>: Это работает только в Firefox Gecko 28 и выше; Chrome и более ранние версии Firefox по-прежнему возвращают массив чисел с плавающей точкой</p> +</div> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt>{{domxref("GamepadButton.value")}} {{readonlyInline}}</dt> + <dd>Значение с плавающей точкой, указывающее на текущее состояние аналоговых кнопок, таких как триггеры на многих современных геймпадах. Значение нормализованно к диапазону 0.0-1.0, где 0.0 означает, что клавиша не нажата совсем, 1.0 - нажата полностью.</dd> + <dt>{{domxref("GamepadButton.pressed")}} {{readonlyInline}}</dt> + <dd>Значение {{domxref("Boolean")}} указывает, нажата ли кнопка (<code>true</code>) или не нажата (<code>false</code>).</dd> +</dl> + +<h2 id="Пример">Пример</h2> + +<p>Приведенный код взят из моего<em> (автора статьи)</em> демо Gamepad API button (вы можете <a href="http://chrisdavidmills.github.io/gamepad-buttons/">Посмотреть демо</a>, и <a href="https://github.com/chrisdavidmills/gamepad-buttons/tree/master">посмотреть исходники на GitHub</a>). Важно — в Chrome {{domxref("Navigator.getGamepads")}} неободимо установить префикс <code>webkit</code>, и значения кнопки будут представлять из себя массив дробных чисел, тогда как в Firefox {{domxref("Navigator.getGamepads")}} нет необходимости устанавливать префикс, и значения будут представлять собой массив объектов {{domxref("GamepadButton")}}; Свойство {{domxref("GamepadButton.value")}} или {{domxref("GamepadButton.pressed")}} необходимо для получения состояния кнопки, в зависимости от от типа кнопки. В данном простом примере обрабатывается оба вида кнопок.</p> + +<pre class="brush: js notranslate">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); +};</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName("Gamepad", "#gamepadbutton-interface", "GamepadButton")}}</td> + <td>{{Spec2("Gamepad")}}</td> + <td>Initial definition</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p>{{Compat("api.GamepadButton")}}</p> + +<h2 id="См._также">См. также</h2> + +<p><a href="/en-US/docs/Web/Guide/API/Gamepad">Using the Gamepad API</a></p> |