GamepadButton

Baseline 廣泛可用 *

此特性已得到良好確立,可跨多種裝置和瀏覽器版本使用。自 2017 年 3 月起,所有瀏覽器均支援此特性。

* 此特性的某些部分可能存在不同級別的支援。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

GamepadButton 介面定義了遊戲手柄或其他控制器上的單個按鈕,允許訪問控制裝置上可用不同型別按鈕的當前狀態。

透過查詢 Gamepad 介面的 buttons 屬性返回的陣列中的任何值,都可以獲得一個 GamepadButton 物件。

例項屬性

GamepadButton.pressed 只讀

一個布林值,指示按鈕當前是否被按下(true)或未被按下(false)。

GamepadButton.touched 只讀

一個布林值,指示按鈕當前是否被觸控(true)或未被觸控(false)。

GamepadButton.value 只讀

一個雙精度浮點數值,用於表示模擬按鈕(如許多現代遊戲手柄上的扳機)的當前狀態。這些值被歸一化到 0.0 到 1.0 的範圍內,其中 0.0 表示按鈕未被按下,1.0 表示按鈕被完全按下。

示例

以下示例中的按鈕值儲存為 GamepadButton 物件的陣列。這個簡單的示例檢查按鈕的 GamepadButton.value 是否大於 0,或者 GamepadButton.pressed 屬性是否表明按鈕已被按下。

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);
}

規範

規範
Gamepad
# gamepadbutton-interface

瀏覽器相容性

另見

使用遊戲手柄 API