Gamepad.buttons

Gamepad インターフェースの Gamepad.buttons プロパティはデバイス上に存在するボタンを表すオブジェクトの配列を返します。

配列内の各エントリは、ボタンが押されていない場合は 0、ボタンが押されている場合は 0 以外の値 (通常は 1.0) です。各 {gamepadButton オブジェクトには、pressed と value という 2 つのプロパティがあります :

  • pressed プロパティはボタンが今押されているか (true) または押されていないか (false) を表す真偽値です。
  • The value プロパティは多くの最新のゲームパッドのトリガなど、アナログボタンの表示を有効にするために使用される浮動小数点値です。 値は 0.0 〜 1.0 の範囲で正規化され、0.0 は押されていないボタンを表し、1.0 は完全に押されたボタンを表します。

構文

readonly    attribute GamepadButton[]     buttons;

下記のコードは Gamepad API ボタンのデモから取得したものです。(デモのライブを見ることができ、Githubでソースコードを見つけることができます)。コードをフォークする際には以降に気をつけてください — Chrome では Navigator.getGamepadswebkit プレフィックスが必要で、ボタンの値は double 値の配列として格納されますが、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);
};

gamepadButton オブジェクトの配列。

仕様

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

ブラウザの互換性

BCD tables only load in the browser

 

参照