我正在开发一个涉及世界地图的Javascript游戏,并且正在将该地图绘制/存储为图像。图像上每个像素的颜色表示地图上该单元格将包含的内容。
动态加载图像并从中读取颜色而不是将其预存储并存储为数组是否有任何内存消耗优势?
此外,这样做可能会导致速度严重下降吗?
根据需要,我可能最终只加载其中的一部分,但是同样的问题仍然存在。当前的测试图像为1000x1000像素。
答案 0 :(得分:2)
不。除非您关心绘制图像而不是手工书写数千个数字,否则没有。
从图像中检索数据的最快方法是获取“类似对象的图像”(基本上是画布或实际图像),然后调用.getImageData(x, y, width, height)
以获取像素值数组。
如果有的话,那会加上“”“开销”“”(微不足道),因为现在您的值增加了4倍。每个像素存储在4个JavaScript 数字上,因为您可能只是将每个图块作为单个整数标识符,否则会浪费内存。
尽管imageData对象允许您从中获取矩形,如果您将拥有4个图块层,则像素的存储方式是最好的。
如果您想将级别存储为图像然后继续使用,我可能仍将级别存储为平面阵列,因为如果需要第5层,则只需切换几个数字,瞧,现在是我的系统有5层,您不能使用图像数据来做到这一点。
无论哪种方式,只要尝试确保无论采用哪种方式,嵌套级别都较低(所有层的平面数组要好于每层4个数组),并且从数组中检索值足够快即可你做什么。