作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我 Collection 了超过一千个 16 x 16 像素的图 block 图像,我用 Java 制作的游戏需要这些图像。
在不耗尽 JVM 可用内存的情况下存储图 block 的最佳方法是什么?
我认为生成 1000 多个 BufferedImages 可能并不明智...
保持图像就绪的主要目的是加载 map , map 将根据 map 文件动态生成。
最佳答案
首先,加载所有这些图像真的是个问题。 16 x 16 像素的 1000 张图像是 256000 像素。即使每个像素使用 4 个字节也只会产生 1 MB 的图像数据,这并不多。
如果您真的想要/需要减少加载到内存中的图像数量,您可以只将 map 所需的可 View block /图像加载到内存中,再加载一些以提高游戏的响应速度。
例如,如果您的游戏显示 n
× m
的 map ,您可以加载 n+2
× m +2
tiles 到内存中,或视觉表示(其中 * 是可见的 tiles 和 + 额外加载到内存中的 tiles):
+++++++++++
+*********+
+*********+
+*********+
+++++++++++
当用户移动 map 时,您删除对不再需要的图 block 的引用并开始加载新图 block 。由于您在内存中保留了一个图 block ,因此移动 map 应该仍然很顺利。当然,如果您的图 block 相当小,或者移动 map 的速度非常快,您可以增加使用的额外图 block 数量
关于java - 在 Java 中加载和缓存图像的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8672598/
我是一名优秀的程序员,十分优秀!