РЕШЕНО
Я делаю 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"
Извините за плохой английский.
если вам нужно больше кода, отправьте мне сообщение, и я отправлю вам его.
Я решил это сам. Я сделал глупость и поставил =‹ в классе GameStateButton.
привет, бжкалк
GameStateButton
и методrender
, особенно строку 87. - person Luiggi Mendoza   schedule 09.05.2015