2013-10-22 38 views
0

我正在寫一個小小的JavaScript遊戲,並試圖使它與遊戲手柄一起工作。遊戲手柄運行(至少在Linux上)。我寫了這個代碼:遊戲手柄javascript創建事件記錄器

var gamePad; 
var checkForGamepad; 

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

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

這是開始檢查是否有連接gamecontroller,我也可以阻止它(因爲當我在例如菜單是)。但現在我想寫一個事件記錄器。我已經爲鍵盤寫了一個,但這很容易,因爲你有一個'鍵入'事件。有沒有人有一個想法,如何寫一個遊戲手柄的事件記錄器?

我的事件記錄我的鍵盤看起來是這樣的:

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

而在當我開始我gameloop()的代碼,我也呼籲window.addEventListener( 'KEYUP',gameNavigationKey,真)

所以我想用我的遊戲手柄爲我的事件記錄器基本上相同的樣式。 我知道我可以使用gamePad.buttons讀取在遊戲板上按下的鍵的值。[0]當按下時沒有按下1時返回0。所以我認爲我需要記住我的鑰匙以前的狀態,但仍然不知道如何開始。 有人可以幫我創建這個事件記錄器嗎? 在此先感謝

+0

你得到'keyup'和'keydown'事件的手柄按鍵?如果是這樣,只需保留所有遊戲手柄按鍵的列表以及是否按下。然後有一個單獨的循環輪詢列表來查看要採取的操作。 – Halcyon

+0

我試過了,但沒有成功:s – Bosiwow

回答

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