HTML5画布:成千上万的移动图像=巨大的FPS损失



我正在尝试用Canvas 2D创建一款HTML5游戏(仅适用于计算机设备)。但有一个问题,我有成千上万的动态图像,有大约4000多个图像(敌人),我的FPS不能超过10。使用Java2D,它工作得很好,现在我正试图将游戏导入HTML5。有没有人有什么建议让我们在HTML5中实现这一点?一些代码优化?如有任何帮助,我将非常感激。

http://jsfiddle.net/LtlFdl/tzd8z/

ctx.clearRect(0, 0, 320, 320); // <- Maybe just Clear the Enemy Square Position?

顺便说一句。在小提琴上只有一个玩家场,在最后有4个玩家场(旋转90度,180度和270度),背景图像,塔和许多效果。所以我要把所有的都乘以4

First…@enhzflep在他的评论中已经提到了一些好的想法。

我想补充的是,设置fillStyle是一种比较昂贵的操作,所以为每4000个敌人绘制设置fillStyle变得非常昂贵。我建议你只显示文本&运行状况信息每秒一次,而不是每个Update_Map1。

在我适度快速的开发桌面,我可以做4000 X drawImage(img,0,0)每秒45次的速率。这让我相信变换(平移,旋转)会减慢你的速度。也许可以创建4个版本的敌人形象——朝上、朝下、朝左;正确的。然后通过绘制合适的图像来完全替换变换。

我看到你在用delete Enemys_P1[i]。"循环"现有敌人的资源效率更高。你可以通过将敌人标记为"非活动"而不处理该敌人来做到这一点。当你需要一个新的敌人时,你可以将一个不活跃的敌人改为"活跃",并将其属性设置为"新"敌人的值。

祝你项目顺利!

最新更新