Я использую Java для создания игры с JavaFX Canvas.
Я передаю Canvas graphicsContext в мой GameLoop, который запускает дополнительный поток.Оттуда я передаю свой graphicsContext через ObjectHandler каждому объекту, который должен быть нарисован на холсте.
Он некоторое время работает таким образом, но затем холст каким-то образом останавливается и никакой объект не перерисовывается.Игра все еще работает в фоновом режиме.В журналах я вижу, что все объекты продолжают работать и обновляются.У кого-нибудь есть идея, почему это может быть или как я могу решить это?
Это моя часть из моего класса окон:
canvas = new Canvas(Config.getCANVAS_WIDTH(), Config.getCANVAS_HEIGHT());
canvas.setFocusTraversable(true);
gc = new GameContainer(canvas.getGraphicsContext2D(), canvas);
primaryStage.setTitle(gc.getTitle());
primaryStage.setResizable(false);
Это часть моего Gameloop:
if (render) {
gc.clearRect(0, 0, width, height);
handler.render(gc);
gc.setFill(Color.GRAY);
if (Config.isDebug()) {
debugText.printDebug(fps);
}
frames++;
}
HandlerClass - это только список с arrayList и двумя циклами (для тиков и рендера).Это пример типичной функции рендеринга
public void render(GraphicsContext gc) {
gc.save();
gc.translate(x, y);
gc.rotate(rotation);
gc.setFill(Color.RED);
gc.fillRect(-4, -4, 8, 8);
gc.restore();
}