我正在研究大量使用HTML5画布的项目。画布可以有不同的高度/宽度,但为了争辩,我们假设它是512x512px。画布被分成一个网格,每个单元格为8个像素。这个网格共有4096个可能的单元格(并且网格可以更大,与1024x1024像素一样大)。用于处理大量画布对象的最高效的库/框架/方法
每个网格单元格都可以具有它自己的颜色以及鼠标事件。我在三个不同的库中实现了基本功能。第一个是原始画布,第二个是KineticJS,第三个是EaselJS。一旦画布上有2000多件物品,所有三家公司都开始与FPS问题斗争。
是否有任何库或工具可以帮助专门处理由大量对象/绘制产生的画布性能问题?有没有关于这个主题的任何教程(用于原始画布或使用库)?
我个人喜欢Pixi.js(http://pixijs.com/)。它还有一个WebGL渲染器,如果设备支持它,它可以提高性能。 – Cristy 2014-09-02 11:29:38
你应该听听markE在说什么。我有我自己的画布引擎,我用这样的东西,我测试它只是为了比较数字。在一个屏幕上绘制4096个相同的彩色框我可以在旧机器上获得19-22fps的镀铬。绘制4096个不同颜色的盒子让我获得了12fps左右的效果。如果你做了相当于缓存画布(markE的提示#1),我很容易获得60fps,因为它实际上只画1张图片。如果你然后clearRect框改变和重画那些你应该仍然在60fps的范围内,因为我看不到你需要改变太多的盒子。 – ericjbasti 2014-09-04 17:47:34
同样,使用spritesheets而不是单个图像将会更加高效。如果您正在使用矢量,请缓存它们。 EaselJS有一个SpriteSheetBuilder用于从其他内容生成运行时spritesheet。 – Lanny 2015-11-19 02:13:05