如何使用键盘输入平滑地移动我的JS对象?
问题的出现原因是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编写相同的代码。希望对你有帮助!谢谢!