Я делаю простую игру JavaFX с главным меню, меню опций и реальной игрой.Я был в состоянии успешно перемещаться по всем этим меню, пока я не сделал кажущееся несвязанным изменение: я вызвал метод "runGame ()" в следующей строке.
Сцена меняется, когда я выполнял оператор
if (window.getScene() == app) {
System.out.println("This is working");
}
между window.setScene (приложение) и вызовом runGame ().Однако, даже если сцена явно изменяется, она не отображается, и программа перестает отвечать на запросы.
Содержимое runGame () выглядит следующим образом:
public void runGame() {
gameClock = new Timeline(new KeyFrame(Duration.seconds(1), e -> spawnAndShrink()));
gameClock.setCycleCount(Timeline.INDEFINITE);
// Timer for program
while (!Target.isGameOver()) {
gameClock.play();
}
gameClock.stop();
}
Я уже объявил«Timeline gameClock» вверху моей программы и импортированы все необходимые классы.Сообщения об ошибках отсутствуют.
Я также изменил метод runGame () в процессе устранения неполадок, изменив
gameClock = new Timeline(new KeyFrame(Duration.seconds(1), e -> spawnAndShrink()));
на
gameClock = new Timeline(new KeyFrame(Duration.seconds(1), e -> System.out.println("Timeline is working")));
Метод "spawnAndShrink"() "предназначен для вызова каждую секунду;он вызывает два других имени методов "spawn ()" и "shrink ()" (я знаю, что это супер креатив).Я неправильно настроил временную шкалу или в базовых методах есть ошибка?Я также сталкивался с той же ошибкой, изменяя сцены, когда пытался вызвать «Thread.sleep (1000)» в цикле while вместо использования временной шкалы.