比如我要做一个微信的飞机大战, 要用键盘控制飞机的移动。
我用的办法是监听键盘的上下左右按键,每次事件发生时,让飞机这个div
的left
和top
发生变化(即增加或减少ins
), 但是如果ins
很小,那么移动飞机很累。如果ins
很大,那么移动很突兀, 而且飞机的移动会有盲区。
这要如何解决呢?
比如我要做一个微信的飞机大战, 要用键盘控制飞机的移动。
我用的办法是监听键盘的上下左右按键,每次事件发生时,让飞机这个div
的left
和top
发生变化(即增加或减少ins
), 但是如果ins
很小,那么移动飞机很累。如果ins
很大,那么移动很突兀, 而且飞机的移动会有盲区。
这要如何解决呢?
首先如上楼所说,绝对不要用DOM去写游戏,也没有哪个游戏是用DOM写的。
其次,如果仅从动画层面考虑,通过改变DOM元素的left,top等会影响DOM结构的属性来形成的动画,效果还不如css3的translate,你可以去尝试比较两种动画的性能。
最后,建议使用canvas,它提供了丰富的API,基本可以满足你做打飞机游戏的需求。根据你问题的需要,你可以参考我这篇文章中,文章末尾太空船的示例代码《每周一点canvas动画》——速度与加速度(2)
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
5 回答1.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
首先建議不要直接使用
Dom
來寫遊戲,Dom
的操作算是挺消耗資源的,當物件一多,瀏覽器的重繪肯定會造成不流暢甚至卡死的問題。建議是利用
Canvas
和WebGL
來配合Javascript
寫遊戲,一些HTML5遊戲框架也很好用,例如pixi.js