我正在尝试让浏览器报告我的 XBOX 控制器的状态。然而,在第一次按下按钮后,它似乎变得“卡住”。我究竟做错了什么?
<body>
<script>
var gamepad = false;
var gamepadDIV = []
window.addEventListener("gamepadconnected", function(e) {
gamepad = e.gamepad;
for (i = 0; i < gamepad.buttons.length + gamepad.axes.length; i++) {
gamepadDIV.push(document.createElement('div'));
document.body.appendChild(gamepadDIV[i]);
}
});
window.addEventListener("gamepaddisconnected", function() {
gamepad = false;
});
function animation() {
if (gamepad != false) {
for (i = 0; i < gamepad.buttons.length; i++) {
gamepadDIV[i].innerHTML = gamepad.buttons[i].pressed;
}
for (i = gamepad.buttons.length; i < gamepad.buttons.length + gamepad.axes.length; i++) {
gamepadDIV[i].innerHTML = gamepad.axes[i - gamepad.buttons.length].value;
}
}
window.requestAnimationFrame(animation);
}
animation();
</script>
</body>
我在 Chrome 上也遇到了同样的问题。
基本上,Chrome 不会随着状态变化而更新 Gamepad 对象。相反,您必须轮询它以获取更新的状态。
在 MDN 的其中一篇教程中,您将看到这一行:
var gamepads = navigator.getGamepads
? navigator.getGamepads()
: (navigator.webkitGetGamepads ? navigator.webkitGetGamepads : [])
所以基本上据我了解,您可以使用gamepadconnected
事件来处理初始化逻辑,但之后您无法直接引用该对象来获取状态更改。
您可以在这里找到更多相关信息:https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API/Using_the_Gamepad_API
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)