如何使用键盘输入平滑地移动我的JS对象?

9 浏览
0 Comments

如何使用键盘输入平滑地移动我的JS对象?

我对HTML5还不熟悉,决定开始编写一个乒乓球游戏。我想要使用键盘平滑地控制角色的移动,W和S键控制左边的角色,上箭头和下箭头控制右边的角色。但是我似乎无法使其工作。可能很简单,但作为一个新手,我需要一点帮助。提前谢谢!

0
0 Comments

问题的出现原因是arrow keys不能触发keypress事件,所以需要使用keydown事件。解决方法是使用keydown事件替代keypress事件。另外,如果使用短时间间隔调用update函数不够流畅,可以使用requestAnimationFrame() API来解决。

当编写游戏时,建议使用jQuery。以下是示例代码:

var characterSpeed = 15;
$(document).on("keydown", function (e) {
    switch (e.which)
    {
        case 87: //w
            char1.y -= characterSpeed;
            break;
        case 83: //s
            char1.y += characterSpeed;
            break;
        case 38: //up arrow
            char2.y -= characterSpeed;
            break;
        case 40: //down arrow
            char2.y += characterSpeed;
            break;
        default:
            alert("You have pressed the key " + e.which);
     } 
});

同时,你可能想读一下这两篇文章:

- [How to find out what character key is pressed?](https://stackoverflow.com/a/1846704/5247200)

- [Simplest way to detect keypresses in javascript](https://stackoverflow.com/questions/16089421)

这些文章可以让你了解如何将多个处理程序绑定到同一个事件上,IE和其他浏览器之间的区别,以及String.fromCharCode函数的使用方法。如果你感兴趣,还可以了解如何使用原生JavaScript编写相同的代码。希望对你有帮助!谢谢!

0