aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/api/gamepadbutton/index.html
blob: e3d77c59c324ba9e9f8700533d3c987b8f00ad90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
---
title: GamepadButton
slug: Web/API/GamepadButton
tags:
  - API
  - Gamepad API
  - Games
  - NeedsBufferSpecLink
  - NeedsMarkupWork
  - Référence(2)
translation_of: Web/API/GamepadButton
---
<div>{{APIRef("Gamepad API")}}</div>

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

<p><code>GamepadButton</code>オブジェクトは、{{domxref("Gamepad")}}インタフェースの<code>buttons</code> プロパティから取得できます。</p>

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

<h2 id="プロパティ">プロパティ</h2>

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

<h2 id="例"></h2>

<p>次のコードは、Gamepad API ボタンのデモです。Chromeでは、{{domxref("Navigator.getGamepads")}}には<code>webkit</code>プレフィックスが必要であり、各ボタンの値は浮動小数点数の配列として格納されます。Firefoxでは、{{domxref("Navigator.getGamepads")}}にはプレフィックスは不要で、各ボタンの値は{{domxref("GamepadButton")}}オブジェクトの配列に格納されます。使用するプロパティはこのオブジェクトの{{domxref("GamepadButton.value")}}または{{domxref("GamepadButton.pressed")}}プロパティのどちらかであり、どちらを使用すればいいかはボタンの種類に依存します。この例ではどちらにも対応しています。</p>

<pre class="brush: js">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 &gt; 0 || gp.buttons[0].pressed == true) {
      b--;
    } else if(gp.buttons[1].value &gt; 0 || gp.buttons[1].pressed == true) {
      a++;
    } else if(gp.buttons[2].value &gt; 0 || gp.buttons[2].pressed == true) {
      b++;
    } else if(gp.buttons[3].value &gt; 0 || gp.buttons[3].pressed == true) {
      a--;
    }
  }

  ball.style.left = a*2 + "px";
  ball.style.top = b*2 + "px";

  var start = rAF(gameLoop);
};</pre>

<h2 id="仕様">仕様</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">仕様</th>
   <th scope="col">状態</th>
   <th scope="col">コメント</th>
  </tr>
  <tr>
   <td>{{SpecName("Gamepad", "#gamepadbutton-interface", "GamepadButton")}}</td>
   <td>{{Spec2("Gamepad")}}</td>
   <td>初版</td>
  </tr>
 </tbody>
</table>

<h2 id="ブラウザ互換性">ブラウザ互換性</h2>

<p>{{Compat("api.GamepadButton")}}</p>

<h2 id="関連項目">関連項目</h2>

<p><a href="/docs/Web/Guide/API/Gamepad">Gamepad API の利用</a></p>