在我的游戏中,我试图制作一个动画行走序列,因此我试图确保图像会根据其所在的动画帧而变化。当按下空格键时,图像会发生变化,但不是从 Sprite 表中获取下一个图像,而是获取下一个图像和上一个图像。我有下面问题的屏幕截图以及代码。
<小时/>按下空格之前
按下空格后
<小时/>
代码
private static BufferedImage image;
private static BufferedImage[] cropped = new BufferedImage[15];
private static byte frame = 0;
public Player(){
try {
image = ImageIO.read(new File("DownWalking.png"));
} catch (IOException ex) {
ex.printStackTrace();
}
}
public void drawPlayer(int x,int y,Graphics2D g2){
if (frame == 0){
cropped[0] = image.getSubimage(2, 1, 23, 43);
}
if (frame == 1){
cropped[1] = image.getSubimage(34, 1, 54, 45);
}
g2.drawImage(cropped[frame],x * Tile.tileSize, y * Tile.tileSize, cropped[frame].getWidth(), cropped[frame].getHeight(), null);
最佳答案
getSubImage
的方法签名是:
getSubimage(int x, int y, int w, int h)
您getSubimage(x1,y1,x2,y2)
导致您的图像获得 2 个图 block 而不是 1 个图 block 。
关于java - 从java获取不正确的子图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20725258/