我正在爲#towerjam製作遊戲,我需要渲染一些我製作的字體。這是我正在使用的代碼。爲什麼我用自定義字體數組獲取ArrayIndexOutOfBoundsException?
public static void render(String msg, Graphics g, int x, int y) {
msg.toUpperCase();
char[] msgArray = msg.toCharArray();
for (char c : msgArray) {
System.out.println();
g.drawImage(letters[c-65], x, y, Tile.DRAW_SIZE, Tile.DRAW_SIZE, null);
x+=Tile.DRAW_SIZE;
}
}
數組letters
是從我的spritesheet中裁剪出來的BufferedImages數組。現在它給了我一個ArrayIndexOutOfBoundsException
,我不知道爲什麼。
您可以發佈全堆棧跟蹤?它包含的'letters'數組有多少個,哪些元素?對於'c'的什麼值,你會得到這個異常(有人告訴我這是'A-Z'範圍之外的字符,假設這些字符存儲在'letters'數組中)? – Pshemo
'字母'數組是所有我製作的大寫字母'精靈。那將是26.'c'有'String'中最後一個字母的值,儘管沒有顯示出來。 – theTechnoKid
這聽起來像你有一個「自定義字體」的解決方案 - 你的問題實際上是「爲什麼錯誤」?建議:1)在您最喜歡的IDE(例如Eclipse)中啓動您最喜歡的調試器,2)調用錯誤,查看回溯。獲取行#..可能是'g.drawImage()'。 3)在該行設置一個斷點。 4)再次調用錯誤。您可能會在此之前多次擊中bkpt。 5)檢查變量(例如'c')。將它與數組長度(例如'letters')進行比較。 6)瞧!在這一點上,你應該能夠解決問題:) GUESS:「c」是「越界」;) – paulsm4