2013-08-07 49 views
0

是否有其他像可變然後緩衝的圖像,因爲當我啓動我的aplication,它從一個文本文檔的地圖讀取,它laggs很多LAGG修復的BufferedImage

我的代碼蒙山數據的BufferedImage(對不起我不是英語) :

for(int i = 0; i < pole[0].length; i++) 
    { 
     for(int j = 0; j < pole.length; j++) 
     { 
      if(pole[j][i] == 1) 
      { 
       g.setColor(Color.RED); 
       try { 
        // g.fillRect(j*40, i*40, 40, 40); 
         wall = ImageIO.read(ClassLoader.getSystemResource("Images/wall.gif")); 
         g.drawImage(wall, j*40, i*40, null); 
       } catch (IOException ex) { 
        JOptionPane.showMessageDialog(null, "Error: "+ex.getMessage()); 
       } 
      } 
     } 
    } 

回答

4

您只需加載一次圖像,然後對每個圖塊使用相同的參考,即可加載圖像i * j次。

I.e.

Image wall = ImageIO.read("..."); 
for(int i=0;i < ...) 
    for(int j=0;j < ...) 
     g.drawImage(i*40, j*40, wall); 

你不應該在不屬於那裏的循環中做事情,你絕對不想在循環中做IO。而且你絕對不希望每次都在循環中加載相同的圖片,因爲它在加載之間不會改變。

+1

此外,它看起來像是在繪畫方法內讀取的圖像,你永遠不應該做的事情(但這當然是猜測)... – haraldK