Тип выражения должен быть типом массива, но он разрешается в BufferedImage
Это действительно странно, ошибка в textures[x]
.
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();
}
}
3 ответа:
Вы повторно используете имя, которое вы дали своему массиву для изображения, которое вы планируете разбить на отдельные элементы. Вы должны дать ему другое имя, чтобы заставить его работать:
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); } }
Это выглядит как двусмысленность происходящего.. измените имя локальной переменной с
BufferedImage textures
наBufferedImage texture
Вы создаете новую переменную с именем
textures
здесь:BufferedImage textures = ImageIO.read(new URL("textures.png"));
, который не является двумерным массивом, как переменная
static
.textures[x][y]
вfor
-цикле находится ссылка на эту переменную, которая объясняет ошибку. Переименуйте один из них, чтобы решить проблему.Кстати это называется переменное затенение.