gpt4 book ai didi

javascript - 如何使用 Gamepad API 检测按钮按下情况?

转载 作者:行者123 更新时间:2023-12-02 21:22:54 25 4
gpt4 key购买 nike

我正在尝试编写一个网页,在其中可以检测 Xbox Controller 上的按钮按下情况,并根据按下的按钮向用户显示 bool 值。现在,我可以检测到正在连接的 Controller 并将其显示为字符串。文档说使用此代码来检测此处按下的按钮:

var isPressed = navigator.getGamepads()[0].pressed;

但 Chrome 在使用时显示此错误:

Uncaught TypeError: Cannot read property 'pressed' of null

该错误链接到上述代码行的 .pressed 部分。 All the documentation is on the Mozilla site ,所以我假设他们在编写教程时使用了 FireFox。

我理想的最终结果是:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<h id="button"></h>
<h id="gpInfo"></h>
<script>
var i = 1;
window.addEventListener("gamepadconnected", function(e) {
var gp = navigator.getGamepads()[e.gamepad.index];
document.getElementById("gpInfo").innerHTML = ("A " + gp.id + " was successfully detected! There are a total of " + gp.buttons.length + " buttons.")
//alert("A " + gp.id + " was successfully detected!")
});
var isPressed = navigator.getGamepads()[0].pressed;
document.getElementById("button").innerHTML = isPressed;
</script>
<!-- <script type="text/javascript" src="gamepadtest.js"></script> -->
</head>
</html>

该代码会在屏幕上打印一个 bool 值,供用户在按下按钮时查看。这是我第一次使用 JavaScript 和 HTML。如果你能让你的答案对菜鸟友好那就太好了! Gamepad API 的文档和 GamepadButton

最佳答案

在引发 gamepadconnected 事件之前,不应引用 Gamepad 对象。此外,您还需要一个循环来轮询按​​钮值。这是一些修改后的代码:

var i = 1; 
window.addEventListener("gamepadconnected", function(e) {
var gp = navigator.getGamepads()[e.gamepad.index];
document.getElementById("gpInfo").innerHTML = ("A " + gp.id + " was successfully detected! There are a total of " + gp.buttons.length + " buttons.")
//alert("A " + gp.id + " was successfully detected!")

setInterval(function(){
isPressed = gp.buttons[0].pressed;
document.getElementById("button").innerHTML = isPressed;
}, 100)
});

关于javascript - 如何使用 Gamepad API 检测按钮按下情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60804995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com