我得到一个ArrayIndexOutOfBoundsException,但仅当存在getSubImage()函数时。
这是为了遍历并获取精灵。我尝试了没有getsubimage的尝试,并且尝试使用不同的for循环,尽管没有任何帮助。
这与我正在比较的线程不同,因为我在另一个线程内部使用了for循环。该程序在没有getSubimage的情况下也可以正常工作,而for循环也可以正常工作。我不知道问题出在哪里或者是什么。
try {
BufferedImage spritesheet = ImageIO.read(
getClass().getResourceAsStream(
"/Sprites/SpriteSheet.gif"
)
);
sprites = new ArrayList<BufferedImage[]>();
for(int i = 0; i < 6; i++) {
BufferedImage[] bi =
new BufferedImage[i];
for(int j = 0; j < numFrames[i]; j++) {
bi[j] = spritesheet.getSubimage(
i * width,
j* height,
width,
height
);
}
sprites.add(bi);
}
}
catch(Exception e) {
e.printStackTrace();
}
我希望它可以循环遍历并获得所有精灵。实际发生的是它没有得到子图像,而只是抛出了超出范围的异常。
答案 0 :(得分:0)
您的程序正在尝试检索数组中没有索引的元素。检查第15行(是否已在某些位置创建numFrames?)。您使用的数组可能不正确,或者numFrames没有具有该特定索引的元素。尝试运行调试器,看看哪个数组索引不足。