Ich bin ein Java-Anfänger und in meinem JavaFX-Controller für mein Spiel habe ich das folgende Code-Snippet. Es ist ein Knopf, der einen Timer aktiviert, die etwas alle 5 Sekunden der Fall ist, funktioniert es völlig in Ordnung:Wie ändere ich die KeyFrame-Dauer meines Timers, wenn der Benutzer auf eine Schaltfläche klickt?
double seconds = 5.0;
@FXML
void unlockBtn(ActionEvent event) {
Timeline timer = new Timeline(new KeyFrame(Duration.seconds(seconds), new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("this is called every"+seconds+"seconds on UI thread");
}
}));
timer.setCycleCount(Timeline.INDEFINITE);
timer.play();
}
dann so habe ich auch einen Knopf, der die „Sekunden“ Variable ändert, sieht der Code für sie:
@FXML
void upgradeSecondsBtn(ActionEvent event) {
seconds = 2.0;
}
Was es tun sollte: es sollte den Timer aktualisieren, so dass es jetzt etwas alle 2 Sekunden statt 5 Sekunden ausführt. Offensichtlich funktioniert das nicht.
Wie kann es so gemacht werden, dass es die Rate des Timers ändert, wenn die Schaltfläche geklickt wird?
Ja, es funktioniert sehr gut. Danke für Ihre Hilfe! – 4242