Программирование игры с использованием класса Javafx из учебника и столкновение с неопределенной ошибкой класса - PullRequest
0 голосов
/ 09 сентября 2018
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;
        }
    }

1 Ответ

0 голосов
/ 09 сентября 2018

Спасибо Бандрейду за ответ. Нужно добавить объект и создать новый объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...