В моей игре я пытаюсь сделать анимированную последовательность хождения, поэтому я стараюсь, чтобы изображение изменилось, на каком анимационном кадре оно включено. Когда нажимается пробел, изображение меняется, но вместо получения следующего изображения из моего спрайта я получаю следующее изображение и предыдущее изображение. У меня есть скриншоты проблемы ниже, а также код.Получение неправильного фрагмента из java
Перед пространством нажимается
После пространства нажимается
Код
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 (х, у, ш , h) похоже, что у вас могут быть (x1, y1, x2, y2) при аварии? image.getSubimage (34, 1, 54, 45); -> image.getSubimage (34, 1, 23, 43); если ваш 2-й кадр больше, чем вдвое больше, чем ваш первый –
Большое вам спасибо! Я действительно думал, что это обрезание из точки А в точку Б, и ваше объяснение помогло многое! @ ns47731 – user2318396
@ ns47731: Я думаю, что вы на месте. Пожалуйста, отредактируйте и опубликуйте в качестве ответа, чтобы мы могли задать вопрос как ответ. :-) – haraldK