GamepadButton

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.

* Some parts of this feature may have varying levels of support.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Die GamepadButton-Schnittstelle definiert einen einzelnen Knopf eines Gamepads oder eines anderen Controllers und ermöglicht den Zugriff auf den aktuellen Zustand verschiedener Arten von Knöpfen, die auf dem Steuergerät verfügbar sind.

Ein GamepadButton-Objekt wird zurückgegeben, indem ein beliebiger Wert des Arrays abgefragt wird, das von der buttons-Eigenschaft der Gamepad-Schnittstelle geliefert wird.

Instanz-Eigenschaften

GamepadButton.pressed Schreibgeschützt

Ein boolescher Wert, der angibt, ob der Knopf derzeit gedrückt (true) oder nicht gedrückt (false) ist.

GamepadButton.touched Schreibgeschützt

Ein boolescher Wert, der angibt, ob der Knopf derzeit berührt (true) oder nicht berührt (false) ist.

GamepadButton.value Schreibgeschützt

Ein Doppelwert, der verwendet wird, um den aktuellen Zustand von analogen Knöpfen darzustellen, wie zum Beispiel die Trigger auf vielen modernen Gamepads. Die Werte sind normalisiert im Bereich von 0,0 bis 1,0, wobei 0,0 einen nicht gedrückten Knopf und 1,0 einen vollständig gedrückten Knopf darstellt.

Beispiel

Die Knopfwerte im folgenden Beispiel werden als ein Array von GamepadButton-Objekten gespeichert. Dieses einfache Beispiel überprüft, ob der GamepadButton.value eines Knopfes größer als 0 ist oder ob die GamepadButton.pressed-Eigenschaft anzeigt, dass der Knopf gedrückt wurde.

js
function gameLoop() {
  const gp = navigator.getGamepads()[0];

  if (gp.buttons[0].value > 0 || gp.buttons[0].pressed) {
    b--;
  } else if (gp.buttons[1].value > 0 || gp.buttons[1].pressed) {
    a++;
  } else if (gp.buttons[2].value > 0 || gp.buttons[2].pressed) {
    b++;
  } else if (gp.buttons[3].value > 0 || gp.buttons[3].pressed) {
    a--;
  }

  ball.style.left = `${a * 2}px`; // ball is a UI widget
  ball.style.top = `${b * 2}px`;

  requestAnimationFrame(gameLoop);
}

Spezifikationen

Specification
Gamepad
# gamepadbutton-interface

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
GamepadButton
pressed
Secure context required
Experimental
touched
value

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
User must explicitly enable this feature.

Siehe auch