javascript - onKeyDown 事件未触发

标签 javascript html5-canvas

我正在使用 javascript 在 Html5 Canvas 中制作一个小型浏览器游戏。 我使用 onKeyUp 和 onKeyDown 事件来获取键盘输入:

function onKeyDown(evt) {
    if (evt.keyCode == 32) {
        spaceKey = true;
    }

    if (evt.keyCode == 38) {
        arrowUpKey = true;
    }

    if (evt.keyCode == 37) {
        arrowLeftKey = true;
    }

    if (evt.keyCode == 39) {
        arrowRightKey = true;
    }
}

function onKeyUp(evt) {
    if (evt.keyCode == 32) {
        spaceKey = false;
    }
    if (evt.keyCode == 38) {
        arrowUpKey = false;
    }

    if (evt.keyCode == 37) {
        arrowLeftKey = false;
    }

    if (evt.keyCode == 39) {
        arrowRightKey = false;
    }
}

我需要箭头键(左、右、上)和空格键。通常会检测到输入,但有一种特定情况不起作用:如果按下向左和向上的箭头(玩家同时跳跃和向左移动),则由于某种奇怪的原因,不会检测到任何空格键输入。

在我的代码中,除了显示的事件之外,我从未为变量“spaceKey”分配任何新值。所以我假设还有另一个原因导致这种特定的按键组合不起作用,或者也许有更好/更安全的方法来处理用户输入?

最佳答案

为了消除键盘的实际问题,请检查此链接,了解为什么键盘不记录某些多按键操作

http://www.microsoft.com/appliedsciences/antighostingexplained.mspx

您也可以使用演示来测试键盘

关于javascript - onKeyDown 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31494138/

相关文章:

javascript - window.open MS Edge/IE 性能低下

javascript - Angular JS - 通过选择选项过滤多个值

javascript - 沿固定 Angular 移动矢量 "straight out"

HTML5 - 渲染简单的电路

javascript - 用逗号或冒号分割字符串

javascript - d3.event.pageX & d3.mouse(this)[0]

javascript - 为什么总是重画整个 Canvas ?

javascript - 使用 recordrtc 将 Canvas 图像录制到视频文件

javascript - Easeljs(MovieClip) Canvas draggable=true不显示重影

javascript - 第二次刷新浏览器后 svg 图像加载到 Canvas 上