我正在开发一个涉及世界地图的 Javascript 游戏,并且正在将该地图绘制/存储为图像。图像上每个像素的颜色代表地图上该单元格将包含的内容。
加载图像并即时从中读取颜色而不是预加载并将其存储为数组是否有任何内存消耗优势?
此外,这样做可能会导致严重的速度下降吗?
我可能最终会根据需要只加载它的一部分,但同样的问题仍然存在。当前测试图像为 1000x1000 像素。
不。没有,除非您关心绘制图像而不是手写数以千计的数字。
从图像中检索数据的最快方法是采用“类似图像的对象”(基本上是画布或实际图像)并调用.getImageData(x, y, width, height)
以获取像素值数组。
如果有的话,那会增加 """overhead""" (可以忽略不计),因为你现在有 4 倍的值。每个像素都存储在 4 个 JavaScript numbers 上,因为您可以将每个图块作为单个整数标识符来代替,这会浪费内存。
虽然, imageData 对象允许您从中获取矩形,如果您将有 4 个平铺层,那么存储像素的方式是最好的。
如果你想将你的关卡存储为一个图像然后去做,我仍然可能将关卡存储在一个平面数组中,因为如果我需要第 5 层,我可以只切换几个数字,瞧,现在我的系统有 5 层,你不能用图像数据做到这一点。
无论哪种方式,只要尝试确保无论您采用哪种方式,都具有低级别的嵌套(所有层的平面数组优于每层的 4 个数组)并且从数组中检索值对于您所做的工作来说足够快.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句