从java获取不正确的子图像

时间:2013-12-22 01:22:35

标签: java sprite bufferedimage

在我的游戏中,我正在尝试制作一个动画行走序列,所以我试图确保图像会根据它所在的动画帧而改变。当按下空格键时,图像会改变,但不是从我的spritesheet中获取下一个图像,而是获得下一个图像和上一个图像。我有下面问题的截图,以及代码。


在按下空格之前

before
压制空间后

after


代码

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);

1 个答案:

答案 0 :(得分:1)

getSubImage的方法签名是:

getSubimage(int x, int y, int w, int h)

getSubimage(x1,y1,x2,y2)导致您的图片获得2个图块而不是1个。

Source