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;
.
.
.
}

在我启动游戏循环()时的代码中,我还调用了 window.addEventListener('keyup',gameNavigationKey,true)

所以我希望我的事件记录器与我的游戏手柄基本相同。我知道我可以使用 gamePad.buttons[0] 读取在游戏板上按下的键的值,未按下时返回 0 按下时返回 1。所以我想我需要记住我的钥匙以前的状态,但仍然不知道如何开始。有人可以帮我创建这个事件记录器吗?提前致谢

4

1 回答 1

1

在当前使用 Chrome 的 Gamepads 实现中,每次更新都必须调用:

 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 回答