0

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

请注意:

一切正常,我不在这里是因为错误,只是滞后!

4

1 回答 1

4

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

每次调用此方法时,您都在读取文件。由于此代码是在循环中执行的,因此您有很多开销。

BufferedImage 应该只在创建类时创建一次。

于 2013-07-01T01:25:38.800 回答