检索多个并重复的keyDown

时间:2012-11-08 15:32:30

标签: javascript keyboard windows-8 onkeydown createjs

我正在尝试为2名玩家做一个简单的乒乓球比赛。

第一个用A和Q(azerty键盘)控制他的打击垫。第二个用P和M控制他的垫。

这是代码

function handleKeyDown(e) {
    switch (e.keyCode) {
        case KEYCODE_ESC:
            break;
        case KEYCODE_UP:
            p1Bitmap.y = p1Bitmap.y - 10;
            break;
        case KEYCODE_DOWN:
            p1Bitmap.y = p1Bitmap.y + 10;
            break;
        case KEYCODE_A:
            p1Bitmap.y = p1Bitmap.y - 10;
            break;
        case KEYCODE_Q:
            p1Bitmap.y = p1Bitmap.y + 10;
            break;
        case KEYCODE_P:
            p2Bitmap.y = p2Bitmap.y - 10;
            break;
        case KEYCODE_M:
            p2Bitmap.y = p2Bitmap.y + 10;
            break;
    }
}

问题是当玩家1按下A上的A和玩家2时,第一个玩家的密钥会被忽略。

可以重复多个关键事件吗? (对于播放器1 A和播放器2 M的例子,我想得到这个:AMAMAMAMAMAMAMAMAMAMAMAMetc而不仅仅是AMMMMMMMMMMMMMMM)

顺便说一下,我正在为Windows 8应用程序(html / css / js)和CreateJS执行此操作。

1 个答案:

答案 0 :(得分:3)

您可以保持移动,直到您检测到相应的keyup事件。开始前进keydown,不要停留到keyup

此外,应注意keydownkeypress不同。无论你按下钥匙多长时间,keydown都只会发射一次。另一方面,keypress会在每次插入(或插入)字符时触发,因此只要您按住该键,就会看到重复的事件。