Я работаю над спрайтовой анимацией (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;
}
}
Не могли бы вы сообщить, что может быть причиной этой ошибки и непрерывного циклического запуска работающей программы?