2012-11-22 98 views
2

這真的很奇怪,錯誤在textures[x]表達式的類型必須是數組類型,但它解析爲BufferedImage

 
The type of the expression must be an array type but it resolved to BufferedImage 

這裏的代碼有什麼問題?

static BufferedImage textures[][] = new BufferedImage[20][20]; 

public static void loadTextures() 
{ 
    try 
    { 
     //Loads The Image 
     BufferedImage textures = ImageIO.read(new URL("textures.png")); 

     for (int x = 0; x < 1280; x += 1) 
     { 
      for (int y = 0; y < 1280; y += 1) 
      { 
       textures[x][y] = textures.getSubimage(x*64, y*64, 64, 64); 
      } 
     } 

    } catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

回答

1

你重用你給你的數組,你打算包裹成單個元素的映像名稱。你應該給它一個不同的名稱,使其工作:

BufferedImage fullImage = ImageIO.read(new URL("textures.png")); 

for (int x = 0; x < 1280; x += 1) { 
    for (int y = 0; y < 1280; y += 1) { 
     textures[x][y] = fullImage.getSubimage(x*64, y*64, 64, 64); 
    } 
} 
+0

哦謝謝,我很笨:p –

1

您創建一個名爲textures這裏的新變量:

BufferedImage textures = ImageIO.read(new URL("textures.png")); 

這是不是一個二維數組,像static變量。 textures[x][y]for -loop中引用了這個變量,它解釋了錯誤。重命名其中一個來解決問題。

順便提一下,這叫做variable shadowing

1

它看起來像一個含糊不清怎麼回事..改變局部變量名從BufferedImage texturesBufferedImage texture

相關問題