GamepadButton

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 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
GamepadButtonChrome 完全対応 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 完全対応 10.1WebView Android 未対応 なしChrome Android 完全対応 ありFirefox Android 完全対応 32Opera Android 完全対応 22
完全対応 22
未対応 14 — 21
接頭辞付き
接頭辞付き webkit のベンダー接頭辞が必要
Safari iOS 完全対応 10.3Samsung 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 完全対応 10.1WebView Android 未対応 なしChrome Android 完全対応 ありFirefox Android 完全対応 32Opera Android 完全対応 22
完全対応 22
未対応 14 — 21
接頭辞付き
接頭辞付き webkit のベンダー接頭辞が必要
Safari iOS 完全対応 10.3Samsung Internet Android 完全対応 あり
touchedChrome 完全対応 ありEdge 完全対応 15Firefox 完全対応 ありIE 未対応 なしOpera ? Safari 完全対応 10.1WebView Android 未対応 なしChrome Android 完全対応 ありFirefox Android 完全対応 ありOpera Android 未対応 なしSafari iOS 完全対応 10.3Samsung 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 完全対応 10.1WebView Android 未対応 なしChrome Android 完全対応 ありFirefox Android 完全対応 32Opera Android 完全対応 22
完全対応 22
未対応 14 — 21
接頭辞付き
接頭辞付き webkit のベンダー接頭辞が必要
Safari iOS 完全対応 10.3Samsung Internet Android 完全対応 あり

凡例

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

関連項目

Gamepad API の利用 (英語)