Javascript(gameQuery游戏)objs太多,无法正常运行
我正在用“gameQuery”jQuery插件写一个js游戏,一个射击游戏 虽然有许多项目符号(例如100个或更多),但动画的旋转速度会非常慢 我使用代码blow循环移动DOM,意思是每20毫秒执行一次函数。所有子弹都存储在一个数组中Javascript(gameQuery游戏)objs太多,无法正常运行,javascript,gamequery,Javascript,Gamequery,我正在用“gameQuery”jQuery插件写一个js游戏,一个射击游戏 虽然有许多项目符号(例如100个或更多),但动画的旋转速度会非常慢 我使用代码blow循环移动DOM,意思是每20毫秒执行一次函数。所有子弹都存储在一个数组中 $.playground().registerCallback(function(){ for(var i = 0; i < bulletList.length; i++) { //move bullet ... } }, 2
$.playground().registerCallback(function(){
for(var i = 0; i < bulletList.length; i++) {
//move bullet
...
}
}, 20);
$.playerly().registerCallback(函数(){
对于(变量i=0;i
如何优化代码以提高效率?谢谢 以下是我能想到的几件事:
如果还没有,您可以使用CSS3来设置子弹的动画。CSS3动画利用GPU。另外,计算长度一次,而不是每次迭代<代码>用于(变量i=0,len=bulletList.length;i
var len=bulletList.length;虽然(len--){//move bullet}
但是我认为你过于关注微优化了。Thx@塞利姆。1.所有的子弹都是敌人的,我没有做任何碰撞检测。2.虽然所有的子弹都放在一组,但每颗子弹都有自己的方向。所以我每次都要用“for”或“while”来表达,我想这就是事情慢下来的关键。我还是想不出解决办法。你试过这个吗。假设你所有的子弹都在一个叫做“子弹”的组中。您可以使用以下命令拆离组:项目符号=$(“#项目符号”).detach();然后,您将像以前一样更改所有子弹的位置。最后,您将使用项目符号.appendTo(parentGroup)将项目符号组附加回文档。告诉我它是否有用。我使用了您的方法,使用detach()的效果不明显。而且,在detach()之后,我无法删除外部项目符号,除非我再次附加它。:)我想出了一个更好的方法:window.setTimeout(function(){bulletMove(bullet)},50);在递归中使用setTimeout,结果非常好,我放弃了“while”语句,因为这里效率低下。现在,即使屏幕上有300或400颗子弹,事情也不会慢下来。谢谢你的帮助!哈哈~