SOLVEDСделать ArrayList из BufferedImages, Keep Crashing
Я делаю java-игру. Я пытаюсь преобразовать текст в BufferedImages, которые являются моими плитами. Но каждый раз, когда я получаю ошибку, и я не знаю, что не так.
Надеюсь, вы можете мне помочь.
package my.tdl.main;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import my.project.gop.main.SpriteSheet;
import my.project.gop.main.loadImageFrom;
public class Font {
private static String chars = " ABCDEFGHIJKLMNOPQRSTUVWXYZ.,?!:'1234567890 ";
public ArrayList<BufferedImage> msg_img = new ArrayList<BufferedImage>();
public static SpriteSheet text = new SpriteSheet();
public Font(String msg, Color colour) {
text.setSpriteSheet(loadImageFrom.LoadImageFrom(Main.class, "textSheet.png"));
msg.toUpperCase();
System.out.println(msg);
System.out.println(msg.length());
for (int i = 0; i <= msg.length() + 1; i++) {
System.out.println(i);
int charIndex = chars.indexOf(msg.charAt(i));
System.out.println(chars.charAt(charIndex));
if (charIndex > 0) {
System.out.println(charIndex * 16 + ", 0, 16, 16");
BufferedImage image = text.getTile(charIndex * 16, 0, 16, 16);
Graphics2D g = image.createGraphics();
g.setColor(colour);
g.fillRect(0, 0, image.getWidth(), image.getHeight());
msg_img.add(image);
}
}
}
public ArrayList<BufferedImage> getMsg_img() {
return msg_img;
}
}
это выход:
STARTGAME
9
0
S
304, 0, 16, 16
1
T
320, 0, 16, 16
2
A
16, 0, 16, 16
3
R
288, 0, 16, 16
4
T
320, 0, 16, 16
5
G
112, 0, 16, 16
6
A
16, 0, 16, 16
7
M
208, 0, 16, 16
8
E
80, 0, 16, 16
Exception in thread "Thread-2" java.lang.IndexOutOfBoundsException: Index: 9, Size: 9
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at my.tdl.gamestate.GameStateButton.render(GameStateButton.java:87)
at my.tdl.gamestates.MenuState.render(MenuState.java:38)
at my.tdl.gamestate.GameStateManager.render(GameStateManager.java:22)
at my.tdl.gameloop.Gameloop.render(Gameloop.java:37)
at my.project.gop.main.GameLoop.run(GameLoop.java:73)
at java.lang.Thread.run(Unknown Source)
Я пытаюсь преобразовать строку = "StartGame"
Извините за плохой Enlish.
Если вам нужно больше кода, пришлите мне сообщение, и я пришлю вам его.
Я решил это сам. Я сделал тупое дело и поместил = < в класс GameStateButton.
поздравления, bjkalk
Пожалуйста, укажите класс 'GameStateButton' и метод' render', особенно линии 87. –