HTML5游戏画布非常大的地图?

时间:2013-08-29 17:14:59

标签: php html5 canvas

我正在使用六边形瓷砖。 我想制作一张非常大的地图,就像世界地图一样。

一个瓷砖宽度为60px,高度为40px。 我的世界将有一千条瓷砖(从左到右)。

但这通常很难加载。 如何使用非常大的地图?我怎样才能解决滞后问题?

3 个答案:

答案 0 :(得分:4)

不要“绘制”可见视口之外的图块。

答案 1 :(得分:1)

我同意,不要在可视区域外绘制瓷砖。

您可能还会遇到问题,只需迭代这么多数据并进行计算即可完成,您可以尝试将背景预渲染为svg甚至是无矢量图像格式。

答案 2 :(得分:1)

地图中有一个很多像素,宽度超过6000像素!

通常情况下,.jpg压缩磁贴是背景带宽最有效的图像。

但在您的情况下,您可以尝试将SVG用于地图背景而不是像素地图。

SVG会记住地图中唯一的线条和曲线。

因此,将SVG视为一个图像,您无需“记住”线条之间的空白像素。

这意味着客户端计算机的完全渲染背景要少得多,无法存入内存。

例如:

此SVG世界地图下载656k,在视图框中仅完全呈现约1mb:

http://upload.wikimedia.org/wikipedia/commons/d/df/Worldmap_location_NED_50m.svg

相同地图的这个.png是160k下载,但在完全渲染到6000+像素宽时是15mb +。

SVG也非常适合“平铺”。

它有一个内置的viewbox,只允许您查看画布所代表的地图部分。

SVG还具有缩放功能,而且图像质量没有太大损失。 (没有像素化的缩放)