javascript - 在 JavaScript 游戏中同时处理 WASD 和箭头

标签 javascript

让我们假设两个玩家用一个键盘进行简单的乒乓球游戏。

移动处理程序看起来很简单:

document.addEventListener('keydown', function (event) {
        if (event.keyCode === 87) { //w
            movePaddle(leftPaddle, 0);

        } else if (event.keyCode === 83) { //s
            movePaddle(leftPaddle, 1);

        } else if (event.keyCode === 38) { //arrow_up
            movePaddle(rightPaddle, 0);

        } else if (event.keyCode === 40) { //arrow_down
            movePaddle(rightPaddle, 1);

        }
});

movePaddle 中的第二个参数函数仅表示方向(向上或向下)。

问题:如果 WUp Arrow被压在一起,然后只有一个桨移动。这取决于最后按下的键。

如何正确处理keydown事件?

我需要两个拨片根据按键一起移动。如果WUp Arrow ,然后两者都会上升。如果WDown Arrow ,然后左上升,右下降。当然,如果只按下一个键,则只有一个拨片应该移动。

最佳答案

https://gist.github.com/RepComm/52690eadaa9f4a3e7a7819b3267feca4

像这样使用它:(在任何类型的循环中,这个只使用动画帧)

Input.init();
var test = function () {
    window.requestAnimationFrame(test);
    if (Input.isKeyDown("w")) {
        console.log("Forward March!");
    }
}
window.requestAnimationFrame(test);

关于javascript - 在 JavaScript 游戏中同时处理 WASD 和箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44470075/

相关文章:

javascript - 捕获 url 前缀但排除 www 的正则表达式

Javascript Lodash 语法错误

javascript - 在浏览器中测试 PhoneGap+AJAX 应用

javascript - React Native Scroll View 不滚动也不跳到底部

javascript - 隐藏/显示 PHP 生成表单的按钮

javascript - 为什么 JavaScript 中的微任务和(宏)任务有区别?

php - php中的foreach循环构造javascript

javascript - 通过 JS 使用 Azure ML Web 服务

javascript - 使用 for 循环和 If/Else 循环队列

javascript - 重新排序计算数组上的索引?