0

我正在尝试为 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 而玩家 2 按下 M 时,第一个玩家的键被忽略。

有可能重复多个关键事件吗?(例如玩家 1 A 和玩家 2 MI 想要得到这个:AMAMAMAMAMAMAMAMAMAMAMetc 而不仅仅是 AMMMMMMMMMMMMMMM)

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

4

1 回答 1

3

您可以继续移动,直到检测到相应的keyup事件。开始keydown前行,不要停止直到keyup

另外,应该注意的keydown是不同于keypress. keydown只会触发一次,无论您按住键多久。 keypress另一方面,每次插入(或将要插入)字符时都会触发,因此只要您按住键,就会看到重复的事件。

于 2012-11-08T15:41:18.550 回答