我正在编写一个小小的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。所以我想我需要记住我的密钥的先前状态,但仍然不知道如何开始。 有人可以帮我创建这个事件记录器吗? 提前致谢
答案 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