HTML5 Canvas:数以千计的移动图像=巨大的FPS损失

时间:2014-07-06 05:02:49

标签: javascript html5 canvas 2d

我正在尝试使用Canvas 2D构建HTML5游戏(仅限计算机作为设备)。但是有一个问题,我有成千上万的动态图像和大约4000多个图像(Enemys)我不会得到超过10 FPS。使用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来完成所有事情。

1 个答案:

答案 0 :(得分:1)

首先......与@enhzflep在评论中已经提到的好想法相同。

我想补充说,设置fillStyle是一个有点昂贵的操作,所以用4000 Enemy draw中的每一个设置fillStyle变得非常昂贵。我建议您只显示文字和文字。健康信息每秒一次,而不是每个Update_Map1。

在我适度快速开发的桌面上,我可以以每秒45次的速度执行4000 X drawImage(img,0,0)。这让我相信转换(平移,旋转)会减慢你的速度。也许创造你的敌人形象的4个版本 - 面朝上,朝下,左和右对。然后通过绘制适当的图像来完全替换变换。

我看到你正在使用delete Enemys_P1[i]。它更有效地回收&#34;回收&#34;退出敌人。你可以通过将敌人标记为&#34;不活动&#34;并没有处理那个敌人。当你需要一个新的敌人时,你可以将一个不活跃的敌人变为“活跃的”#34;并将其属性设置为&#34; new&#34;敌人的价值观。

祝你的项目好运!