По какой-то причине я получаю ошибку ArrayIndexOutOfBoundsException, я не пытаюсь получить доступ к каким-либо элементам массива, все, что я хочу сделать, это установить размер и передать по ссылке к i.getRGB().ArrayIndexOutOfBoundsException, не обращаясь ни к одному из индексов
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Logic;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
*
* @author Steven, even(RageZone), Zingzags(PokeCommunity)
*/
public class SpriteSheet {
private String path;
private final int size;
private int[] pixels;
public static SpriteSheet tiles = new SpriteSheet("/Tilesets/Outside.png", 256);
public SpriteSheet(String path, int size){
this.path = path;
this.size = size;
pixels = new int[this.size * this.size];
load();
}
public int getPixels(int params){
return pixels[params];
}
public int getSize(){
return size;
}
public int[] getPixels(){
return pixels;
}
private void load(){
try{
BufferedImage im = ImageIO.read(SpriteSheet.class.getResource(path));
int w = im.getWidth();
int h = im.getHeight();
im.getRGB(0, 0, w, h, pixels, 0, w);
} catch(IOException ex){
ex.printStackTrace();
}
}
}
Ошибка:
Exception in thread "Display" java.lang.ExceptionInInitializerError
at Logic.Sprite.<clinit>(Sprite.java:16)
at Logic.Screen.render(Screen.java:46)
at game.Game.render(Game.java:82)
at game.Game.run(Game.java:109)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 65536
at java.awt.image.BufferedImage.getRGB(BufferedImage.java:958)
at Logic.SpriteSheet.load(SpriteSheet.java:47)
at Logic.SpriteSheet.<init>(SpriteSheet.java:27)
at Logic.SpriteSheet.<clinit>(SpriteSheet.java:21)
... 5 more
Дело в том, что оно находится в границах, это не значит, что я выхожу из его параметров или чего-то еще. Но что вы пытаетесь сказать, является четкой проверкой, ясно ли изображен массив в границах? –
Я пытаюсь сказать, что это, скорее всего, вызвано предоставлением неверных параметров 'getRGB'. Именно поэтому они неверны, неясно ... и как их исправить зависит от того, что вы на самом деле пытаетесь сделать. (Но вы должны быть в состоянии понять это из чтения javadoc тщательно.) –
Почему изменение 'size' до' long' имеет значение? Это вряд ли будет проблемой. Проблема, скорее всего, ** значение ** вы используете. –