Gamepad javascript创建事件记录器

时间:2013-10-22 12:00:30

标签: javascript events recorder gamepad

我正在编写一个小小的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读取在游戏手柄上按下的键值。按钮[0]在按下时未按下1时返回0。所以我想我需要记住我的密钥的先前状态,但仍然不知道如何开始。 有人可以帮我创建这个事件记录器吗? 提前致谢

1 个答案:

答案 0 :(得分:1)

在当前使用Chrome的Gamepads实施中,您必须在每次更新时致电:

 navigator.webkitGetGamepads();

它将为您提供打击垫的最新状态。如果您想要实现某些功能,您需要与之前的状态进行比较并制作自己的活动。

Firefox并不需要在每一帧调用getGamepads,但在实现游戏手柄连接和游戏手柄连接后自动更新对象。

您可以在此处找到更多信息:

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