1. 開発者向けのウェブ技術
  2. Web API
  3. Gamepad
  4. buttons

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Gamepad: buttons プロパティ

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2017年3月以降、すべてのブラウザーで利用可能です。

Gamepad.buttonsGamepad インターフェイスのプロパティで、機器上に存在するボタンを表す gamepadButton オブジェクトの配列を返します。

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

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

gamepadButton オブジェクトの配列です。

下記のコードはゲームパッド API ボタンのデモから取得したものです。(デモのライブを見ることができ、Github でソースコードを見つけることができます)。コードをフォークする際には以降に気をつけてください — Chrome では Navigator.getGamepadswebkit 接頭辞が必要で、ボタンの値は double 値の配列として格納されますが、 Firefox はNavigator.getGamepads では接頭辞が不要で、ボタンの値は GamepadButton オブジェクトの配列に保存されます。GamepadButton.value または GamepadButton.pressed プロパティはボタンの種類に応じてアクセスする必要があります。この簡単なサンプルでは一方のみを許可しています。

js
function gameLoop() {
 let a = 0;
 let b = 0;
 if (navigator.webkitGetGamepads) {
 const 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 {
 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.style.top = `${b * 2}px`;
 const start = rAF(gameLoop);
}

仕様書

仕様書
Gamepad
# dom-gamepad-buttons

ブラウザーの互換性

関連情報

ゲームパッド API の使用

MDN の改良に協力

協力方法を知る

このページは MDN の貢献者によって に最終更新されました。

AltStyle によって変換されたページ (->オリジナル) /