我正在使用Graphics2D在我的游戏上绘制地图。
在循环中它称之为:
for(int i = 0; i < tiles.length; i++){
for(int j = 0; j < tiles[i].length; j++){
if(tiles[i][j]==1){ //GRASS
g2d.drawImage(getImage.getTile("grass.png", 0, 0, ), i* 32, j* 32, null);
}
if(tiles[i][j]==2){ //ROCK
g2d.drawImage(getImage.getTile("rock.png", 0, 0), i* 32, j* 32, null);
}
}
}
在方法getImage.getTile(“grass.png”)中,它只是一个单独的类,用于返回给定路径的缓冲图像。
现在这一切都有效,但它就像没有明天一样落后。就像我会按D向右移动它需要3秒钟然后地图以非常迟滞的方式转换!请帮忙!
以下是缓冲图像的代码:
public static BufferedImage getTile(String name, int x, int y){
try{
BufferedImage imageMap;
imageMap = ImageIO.read(getImage.class.getResource("/tiles/"+name));
BufferedImage a = imageMap.getSubimage(x * 32, y * 32 , 32, 32);
return a;
}catch(Exception e){
}
return null;
}
一切都有效,我不在这里因为错误,只是滞后!
答案 0 :(得分:4)
在方法getImage.getTile(“grass.png”)中,它只是一个单独的类,我返回给定路径的缓冲图像。
每次调用此方法时都在读取文件。由于此代码在循环中执行,因此会产生大量开销。
只有在创建类时才能创建一次BufferedImage。