【问题标题】:Gamepad javascript create event recorderGamepad javascript 创建事件记录器
【发布时间】:2013-10-22 12:00:29
【问题描述】:

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

【问题讨论】:

  • 您是否收到了游戏手柄按键的keyupkeydown 事件?如果是这样,只需保留所有游戏手柄键的列表以及它们是否被按下。然后有一个单独的循环轮询该列表以查看要采取的操作。
  • 我试过了,但是没用:s

标签: javascript events recorder gamepad


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    相关资源
    最近更新 更多