JavaFX: ошибка зацикливания при запуске SideScroller (спрайтовая анимация) - PullRequest
0 голосов
/ 16 апреля 2020

Я работаю над спрайтовой анимацией (SideScroller). Я новичок в этой области. Когда я запускаю код, я получаю сообщение об ошибке зацикливания в консоли (см. Ниже), и программа зацикливается. Одновременно я получаю вывод на экран в виде простой серой рамки. В большинстве случаев он обращается к «at javafx.animation.AnimationTimer $ AnimationTimerReceiver.lambda $ handle $ 0 (AnimationTimer. java: 57)». Когда я нажимаю на ссылку, она указывает на метод дескриптора:

     AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
                AnimationTimer.this.handle(now);
                return null;
            }, accessCtrlCtx);
        }

public abstract class AbstractAnimator extends AnimationTimer implements AnimatorInterface, Drawable<Sprite> {

    protected MapSceneInterface map;
    protected Tuple mouse;
    private Canvas canvas;
    private FpsCounter fps;
    private Grid grid;

    public AbstractAnimator() {
        mouse = new Tuple();
        fps = new FpsCounter(10, 25);
        fps.getDrawable().setFill(Color.BLACK).setStroke(Color.WHITE).setWidth(1);
    }

    public void clearAndFill(GraphicsContext gc, Color background) {

        gc.setFill(background);
        gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());
        gc.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
    }

    public void handle(long now) {  
        GraphicsContext gc = canvas.getGraphicsContext2D();
        if (map.getDrawFPS()) {
            fps.calculateFPS(now);
        }
        handle(gc, now);
        if (map.getDrawGrid()) {
            if (grid == null) {
                grid = new Grid(map.getGridCount(), canvas.getWidth(), canvas.getHeight());
                Drawable<?> gridSprite = grid.getDrawable();
                gridSprite.setStroke(Color.BLACK);
                gridSprite.setWidth(1);
                gridSprite.setScale(map.getScale());
                gridSprite.setTileSize(map.getGridSize());
            }
            grid.getDrawable().draw(gc);
        }
        if (map.getDrawFPS()) {
            fps.getDrawable().draw(gc);
        }
    }

    public abstract void handle(GraphicsContext gc, long now);

    public void setMapScene(MapSceneInterface map) {
        this.map = map;
    }

}

Не могли бы вы сообщить, что может быть причиной этой ошибки и непрерывного циклического запуска работающей программы?

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