【发布时间】:2012-02-11 08:28:01
【问题描述】:
大家好,我正在制作一个 2D 游戏,我已经从 4 个预设图像生成了一个随机的草地背景。我的问题是,我的游戏使用此代码从游戏开始时创建的数组中绘制每个图像:
public static void createBackground() {
for(int x = 0; x < 640; x+= 32) {
for(int y = 0; y < 496; y+= 32) {
random = new Random();
int grassTex = random.nextInt(grassTextures.size());
grassPos.add(grassTextures.get(grassTex));
}
}
}
这很好用,但这就是问题所在。我正在使用以下方法重新绘制放入该数组的每个图像:
public static void paintBackground(Graphics g) {
counter = 0;
for(int x = 0; x < 640; x+= 32) {
for(int y = 0; y < 496; y+= 32) {
random = new Random();
int grassTex = random.nextInt(grassTextures.size());
g.drawImage(grassPos.get(counter), x, y, null);
counter++;
}
}
}
这会导致 fps 下降(不是很多,但很明显)。无论如何,我可以将所有这些草图像绘制到一个 BufferedImage 中,以便它只是一个正在绘制的图像?或者有更有效的方法吗?
谢谢。
【问题讨论】:
-
顺便说一句,创建一个
Random并重复使用它,而不是每次循环迭代都创建一个。
标签: java swing model bufferedimage graphics2d