我已經做了一小段代碼來spritesheets分成單獨的圖像...出界例外getSubimage()方法
private BufferedImage sheet, dirt, grass, rock, tree, water;
int width = 64, height = 64;
public void split() {
dirt = sheet.getSubimage(0,0,width,height);
grass = sheet.getSubimage(width,0,width*2,height);
rock = sheet.getSubimage(width*2,0,width*3,height);
tree = sheet.getSubimage(0,height,width,height*2);
water = sheet.getSubimage(width,height,width*2,height*2);
}
現在,預計前兩個(泥土和草)順利。但是,問題出在岩石種植線上。出於某種原因,則丟棄一個異常...
「 異常在線程‘線程0’java.awt.image.RasterFormatException:(X +寬度)是柵格
以外在sun.awt.image。 ByteInterleavedRaster.createWritableChild(ByteInterleavedRaster.java:1245)
「
因此很明顯,這個問題是x的值是做‘出界’。但是x的值是(寬* 2),所以128pix,這是很好的圖像(192x128),我已附加作爲證明的界限。
我也改變了一點點的代碼來裁剪x值爲1的岩石,但我仍然得到的問題,相同的使用相同的尺寸爲anothe bufferedImage。
對不起,在這篇文章中有什麼不對,這是我第一次。
在此先感謝
所以128是在Java範圍0-128? – John3136
我從來沒有這樣做過,但我認爲你無論在高度還是寬度方面都是正確的。順便說一句,文檔說,x和y是左上角,你有,但之後,我會認爲正常的寬度和高度在這裏是適當的。由於您在某個時間點開始工作,您不必補償寬度或高度,這是我認爲您出錯的地方。嘗試做,寬度和高度(不是x和y)只是'寬度,高度'和原因'草地'不會給你一個錯誤是因爲你有第三個選項'岩石'旁邊。 –