使用g2d.drawImage时有很多滞后 - Java

时间:2013-07-01 01:17:57

标签: java awt game-engine bufferedimage graphics2d

我正在使用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;
}

请注意:

一切都有效,我不在这里因为错误,只是滞后!

1 个答案:

答案 0 :(得分:4)

  

在方法getImage.getTile(“grass.png”)中,它只是一个单独的类,我返回给定路径的缓冲图像。

每次调用此方法时都在读取文件。由于此代码在循环中执行,因此会产生大量开销。

只有在创建类时才能创建一次BufferedImage。