else if(left || right) {
if(currentAction != WALKING) {
currentAction = WALKING;
animation.setFrames(sprites.get(WALKING));
animation.setDelay(40);
width = 30;
Вот код, с которым у меня проблемы. а именно animation.setFrames
и setDelay
setFrames
использует массив BufferedImage
, а setDelay
является переменной long
. Две ошибки, которые появляются,
The method setFrames(BufferedImage[]) is undefined for the type Animation
и
The method setDelay(Duration) in the type Animation is not applicable for the arguments (int)
public void setFrames(BufferedImage[] frames) {
this.frames = frames;
currentFrame = 0;
startTime = System.nanoTime();
playedOnce = false;
это код для setFrames
, а код установщика delay
просто
public void setDelay(long d) {
delay = d;
}
Любая помощь приветствуется.
В учебнике не было ни одной из этих ошибок
РЕДАКТИРОВАТЬ: я создал новый класс Animation
в конструкторе, но он не решил его. Добавлен класс анимации
package Entity;
import java.awt.image.BufferedImage;
public class Animation {
private BufferedImage[] frames;
private int currentFrame;
private long startTime;
private long delay;
private boolean playedOnce; played; e.g. an attack so it does not
public void Animation() {
playedOnce = false;
}
public void setFrames(BufferedImage[] frames) {
this.frames = frames;
currentFrame = 0;
startTime = System.nanoTime();
playedOnce = false;
}
public void setDelay(long d) {
delay = d;
}
public void setFrame(int i) {
currentFrame = i;
}
public void update() {
if (delay == -1)
return;
long elapsed = (System.nanoTime() - startTime) / 1000000;
if (elapsed > delay) {
currentFrame++;
playedOnce = true;
}
}
public int getFrame() {
return currentFrame;
}
public BufferedImage getImage() {
return frames[currentFrame];
}
public boolean hasPlayedOnce() {
return playedOnce;
}
}