Впервые в Java и JavaFX, поэтому, пожалуйста, потерпите меня
Мне нужно сделать презентацию из 5 трехмерных моделей фруктов, которые показывают в непрерывном цикле с интервалом в 15 секунд: fruit1 в течение 15 секунд, затем fruit2 в течение 15 секунди т. д. и т. д. до 15 секунд на fruit5, а затем обратно на fruit1 и продолжается до тех пор, пока я не нажму клавишу ESC, которая должна закрыть окно.
Я также понимаю, что идеально менять объект корневой группыэто составляет сцену вместо смены сцены, поэтому я изменил это в своем коде
Я понимаю, что временная шкала необходима для того, чтобы что-то изменить в сцене во время воспроизведения, но я попробовал счто-то похожее на то, что говорит этот ответ , но я не понимаю, как переключать корень сцены каждые 15 секунд
Я думал добавить временную шкалу для фруктовой сцены, так как это только5 фруктов, но я все еще не могу показать свою первую сцену (с фруктами [0]). Я полагаю, что могу сделать 5 временных шкал по 15 секунд каждая и поместить их в цикл продолжения, пока я не нажму esc.
код ниже компилируется, но после нажатия кнопки run окно не появляется в течение 15 секунд, а затем я получаю окночтобы показать с фруктами, но если раскомментировать закомментированный раздел, я получаю фрукты [0], а затем фрукты 1 , почти желаемый эффект, но я не уверен, как выпрыгнуть из фруктов 1 к фруктам [2] (раз я, конечно, добавил эти фрукты)
уже 2 недели на этом, помогите пожалуйста !!
Обновление: я изменил объект панели для группыобъект и я вынули сцену и сцену из обработчика событий. но все, что я получаю, это пустое окно, когда я запускаю его.
public void start(Stage stage) throws Exception {
BorderPane[] scenes = new BorderPane[]{createSceneApple(),createSceneCarrot()};
Group root = new Group();
Timeline timeline = new Timeline();
// Define the Durations
Duration sceneDuration = Duration.seconds(15);
KeyFrame kf = new KeyFrame(sceneDuration, new EventHandler<ActionEvent>(){
@Override
public void handle(ActionEvent event) {
root.getChildren().setAll(scenes[1]);
}
});
timeline.getKeyFrames().add(kf);
timeline.playFromStart();
timeline.setCycleCount(1);
Scene scene = new Scene(root,windowWidth,windowHeight,true);
stage.setScene(scene);
stage.show();
}