0

私は小さな JavaScript ゲームを書いていて、それをゲームパッドで動作させようとしています。ゲームパッドは動作します (少なくとも Linux では)。私はこのコードを書きました:

var gamePad;
var checkForGamepad;

function startPolling() {
checkForGamepad= setInterval(function () {
gamePad= navigator.webkitGetGamepads && navigator.webkitGetGamepads()[0]
},20)}

function stopPolling(){
 clearInterval(checkForGamepad);
 checkForGamepad=null;
}

これは、ゲームコントローラーが接続されているかどうかの確認を開始するためのものであり、停止することもできます (たとえば、メニューにいるとき)。しかし、今はイベントレコーダーを書きたいと思っています。キーボード用は既に書いていますが、'keyup' イベントがあるので簡単です。ゲームパッド用のイベントレコーダーを作成する方法を知っている人はいますか?

キーボードのイベント レコーダーは次のようになります。

function gameNavigationKey(evt){
switch (evt.keyCode){
case 32:  // spacebar was pressed 
//change the gravity
// do some other stuff
break;
.
.
.
}

また、gameloop() を開始するときのコードでは、window.addEventListener('keyup',gameNavigationKey,true) も呼び出します。

そのため、ゲームパッドを使用したイベント レコーダーにも基本的に同じスタイルが必要です。gamePad.buttons[0] を使用して、ゲームパッドで押されているキーの値を読み取ることができることを知っています。そのため、キーの以前の状態を覚えておく必要があると思いますが、それでも開始方法がわかりません。このイベント レコーダーの作成を手伝ってもらえますか? 前もって感謝します

4

1 に答える 1

1

Chrome を使用したゲームパッドの現在の実装では、更新のたびに以下を呼び出す必要があります。

 navigator.webkitGetGamepads();

パッドの最新のステータスが表示されます。そこから何かを実装したい場合は、以前のステータスと比較して、独自のイベントを作成する必要があります。

Firefox はすべてのフレームで getGamepads を呼び出す必要はありませんが、イベント gamepadconnected および gamepaddisconnected を実装した後、オブジェクトを自動的に更新します。

ここで追加情報を見つけることができます:

http://www.html5rocks.com/en/tutorials/doodles/gamepad/ https://developer.mozilla.org/en-US/docs/Web/Guide/API/Gamepad/

于 2014-08-28T13:24:49.287 に答える