2

这真的很奇怪,错误在textures[x].

表达式的类型必须是数组类型,但它解析为 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();
    }
}
4

3 回答 3

1

您在此处创建一个新变量textures

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

这不是像static变量那样的二维数组。textures[x][y]for-loop 中引用了这个变量,这解释了错误。重命名其中之一以解决问题。

顺便说一下,这称为变量遮蔽

于 2012-11-22T00:32:52.747 回答
1

看起来模棱两可..将局部变量名称从更改BufferedImage texturesBufferedImage texture

于 2012-11-22T00:33:36.617 回答
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);
    }
}
于 2012-11-22T00:33:40.547 回答