Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用g2d.drawImage-Java时有很多延迟_Java_Awt_Game Engine_Bufferedimage_Graphics2d - Fatal编程技术网

使用g2d.drawImage-Java时有很多延迟

使用g2d.drawImage-Java时有很多延迟,java,awt,game-engine,bufferedimage,graphics2d,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*

我正在使用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”)中,它只是一个seprate类,用于返回给定路径的缓冲图像

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

创建类时,只能创建一次BuffereImage

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

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


创建类时,只能创建一次BuffereImage

所以,如果我做一些类似于'bufferedimagegrass=ImageIO.read(this.class.getResource(“grass.png”))的事情会更好吗;BuffereImage stone=ImageIO.read(this.class.getResource(“stone.png”);对于(inti=0;ipublic 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; }