Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

GamepadButton

Baseline Weitgehend verfügbar *

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2017 browserübergreifend verfügbar.

* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.

Die GamepadButton-Schnittstelle definiert eine einzelne Taste eines Gamepads oder eines anderen Controllers und ermöglicht den Zugriff auf den aktuellen Zustand verschiedener Arten von Tasten, die auf dem Steuergerät verfügbar sind.

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

Instanz-Eigenschaften

GamepadButton.pressed Schreibgeschützt

Ein boolescher Wert, der anzeigt, ob die Taste derzeit gedrückt (true) oder nicht gedrückt (false) ist.

GamepadButton.touched Schreibgeschützt

Ein boolescher Wert, der anzeigt, ob die Taste derzeit berührt (true) oder nicht berührt (false) ist.

GamepadButton.value Schreibgeschützt

Ein doppelter Wert, der verwendet wird, um den aktuellen Zustand von analogen Tasten darzustellen, wie z.B. die Trigger bei vielen modernen Gamepads. Die Werte sind normalisiert im Bereich von 0,0 bis 1,0, wobei 0,0 für eine nicht gedrückte Taste steht und 1,0 für eine vollständig gedrückte Taste.

Beispiel

Die Tastenwerte im folgenden Beispiel werden als ein Array von GamepadButton-Objekten gespeichert. Dieses einfache Beispiel überprüft, ob der GamepadButton.value einer Taste größer als 0 ist oder ob die GamepadButton.pressed-Eigenschaft anzeigt, dass die Taste 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

Spezifikation
Gamepad
# gamepadbutton-interface

Browser-Kompatibilität

Siehe auch

Verwendung der Gamepad API