GamepadButton インタフェースはゲームパッドやその他のコントローラの各ボタンを定義します。このインタフェースによって、コントローラ上で使用できるボタンの状態を確認することができます。

GamepadButtonオブジェクトは、Gamepadインタフェースのbuttons プロパティから取得できます。

注釈: これはFirefox Gecko 28以降の場合の説明であり、Chrome と以前のFirefoxのバージョンでは、浮動小数点数の配列が返されます。

プロパティ

GamepadButton.value 読取専用
多くのモダンなゲームパッドにあるトリガーなどのアナログボタンの現在の状態を示す浮動小数点数です。この値は0.0から1.0までの値に正規化されており、0.0はボタンが押されていない状態で、1.0はボタンが完全に押されている状態を示します。
GamepadButton.pressed 読取専用
ボタンが押されているかどうかを示すboolean型の値です。ボタンが押されている場合はtrue、押されていない場合はfalseになります。

次のコードは、Gamepad API ボタンのデモです。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 = rAF(gameLoop);
};

仕様

仕様 状態 コメント
Gamepad
GamepadButton の定義
草案 初版

ブラウザ互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応Chrome 完全対応 35
完全対応 35
未対応 21 — 34
接頭辞付き
接頭辞付き webkit のベンダー接頭辞が必要
Edge 完全対応 ありFirefox 完全対応 29
完全対応 29
未対応 24 — 28
無効
無効 From version 24 until version 28 (exclusive): this feature is behind the dom.gamepad.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 22
完全対応 22
未対応 15 — 21
接頭辞付き
接頭辞付き webkit のベンダー接頭辞が必要
Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 32Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 完全対応 あり
pressedChrome 完全対応 35
完全対応 35
未対応 21 — 34
接頭辞付き
接頭辞付き webkit のベンダー接頭辞が必要
Edge 完全対応 12Firefox 完全対応 29
完全対応 29
未対応 24 — 28
無効
無効 From version 24 until version 28 (exclusive): this feature is behind the dom.gamepad.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 22
完全対応 22
未対応 15 — 21
接頭辞付き
接頭辞付き webkit のベンダー接頭辞が必要
Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 32Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 完全対応 あり
valueChrome 完全対応 35
完全対応 35
未対応 21 — 34
接頭辞付き
接頭辞付き webkit のベンダー接頭辞が必要
Edge 完全対応 12Firefox 完全対応 29
完全対応 29
未対応 24 — 28
無効
無効 From version 24 until version 28 (exclusive): this feature is behind the dom.gamepad.enabled preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 22
完全対応 22
未対応 15 — 21
接頭辞付き
接頭辞付き webkit のベンダー接頭辞が必要
Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 32Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 完全対応 あり
touchedChrome ? Edge ? Firefox ? IE ? Opera ? Safari ? WebView Android ? Chrome Android ? Edge Mobile ? Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android ?

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。
使用するには、ベンダー接頭辞または異なる名前が必要です。
使用するには、ベンダー接頭辞または異なる名前が必要です。

関連項目

Using the Gamepad API (英語)

ドキュメントのタグと貢献者

このページの貢献者: e53e04ac
最終更新者: e53e04ac,