首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gamepad javascript未能按预期更新

gamepad javascript未能按预期更新
EN

Stack Overflow用户
提问于 2020-05-25 18:20:16
回答 1查看 90关注 0票数 2

我正在尝试让浏览器报告我的XBOX控制器的状态。然而,在第一次按下按钮后,它似乎变得“卡住”了。我做错了什么?

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2021-08-23 22:08:10

我在Chrome上也遇到了同样的问题。

基本上,Chrome不会随着状态的改变而更新Gamepad对象。相反,您必须轮询它以获取更新的状态。

在一个关于MDN的教程中,你会看到下面这一行:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62000380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档