我正在制作一个基于文本的RPG,并在处理它时遇到了这个错误。
package game;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
/**
*
* @author Pyro
*/
public class SpriteSheetLoader {
public int[] sheetPixels;
public int[] pixels;
int x, y, sheetWidth;
public SpriteSheetLoader(BufferedImage sheet){
BufferedImage image = new BufferedImage(sheet.getWidth(), sheet.getHeight(), BufferedImage.TYPE_INT_ARGB);
image.getGraphics().drawImage(sheet, 0, 0, null);
sheetPixels = ((DataBufferInt)image.getRaster().getDataBuffer()).getData();
sheetWidth = sheet.getWidth();
}
public void grabTile(int tile, int width, int height) {
sheetPixels = new int[width * height];
int xTile = tile % 16;
int yTile = tile % 16;
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int value = pixels[(x + (y * width))] * sheetPixels[((x + (xTile * width)) + (y + (yTile * height)) * sheetWidth)];
}
}
}
}
错误显示在第7行左右,我似乎无法找出问题
答案 0 :(得分:0)
您没有使用您的代码进行任何分配:
pixels[(x + (y * width))] * sheetPixels[((x + (xTile * width)) + (y + (yTile * height)) * sheetWidth)];
你需要对这里的值做一些事情,我不确定你要做什么(比如可能在数组中设置值或其他东西)所以这里只是一个例子。
int value = pixels[(x + (y * width))] * sheetPixels[((x + (xTile * width)) + (y + (yTile * height)) * sheetWidth)];
除了您的错误之外,您还是sheetPixels = new int[width * height];
并在尝试使用sheetPixels[...]
从数组中获取数据后立即执行{{1}},但这与您提出的问题完全不同。