Timeline

Mahoni84

Mitglied
Hallo zusammen,

ich habe folgende Mehtode erstellt:

public void spielBeenden () {
timer2 = new Timeline(new KeyFrame(Duration.seconds(20), new TimerHandler()));
timer2.play();
System.out.println("Timer 2");
Platform.exit();
}

Folgendes Problem: das Spiel wird sofort geschlossen und die Ausgabe findet auch statt, der timer2 wird nicht aktiviert oder falsch aktiviert.
(Der TimerHandler implementiert den Eventhandler,habe auch schon folgendes versucht: timer2 = new Timeline(new KeyFrame(Duration.seconds(20)));)

Bin für jede Hilfestellung dankbar.
 

KonradN

Super-Moderator
Mitarbeiter
Was genau willst Du denn erreichen? Platform.exit beendet nun einmal direkt einiges. Und wenn es keine non-demon Threads gibt, wird auch die ganze JVM direkt geschlossen.
Platform (JavaFX 8) (oracle.com)

Wenn Du willst, dass JavaFX die Timeline abspielt, dann darfst Du JavaFX nicht beenden...
 

Mahoni84

Mitglied
Hallo,
Ich würde gerne erreichen, dass das Spiel noch ca.20 Sekunden angezeigt wird, bevor es geschlossen wird.

Danke für deine Antwort
 

KonradN

Super-Moderator
Mitarbeiter
Dann ruf das Platform.exit erst später auf. Wenn das direkt nach der Timeline sein soll, dann könntest Du das z.B. bei onFinished machen. Also z.B. etwas wie
timer2.setOnFinished( e -> Platform.exit() );
 

Mahoni84

Mitglied
Hat leider nicht geklappt, das Spiel weiterhin sofort geschlossen..
Das Spiel an einer anderen Stelle zu schließen hat bisher auch nicht funktioniert...
Dennoch glaube ich, dass genau hier der Knackpunkt liegt.
 

Mahoni84

Mitglied
Oha!!!
das ist es gewesen! Vielen Dank!
Jetzt muss ich nur noch abklären ob ich das so verwenden darf.
Great
Vielen Dank nochmals

Wie hast du die Methode umgestellt denn ursprünglich lautet sie ja:
setOnFinished(EventHandler<ActionEvent> value)
vom Verständnis her kann ich mit
( e -> Platform.exit() ) noch nicht viel anfangen.
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Das ist eine sogenannte Lambda Expression. setOnFinished erwartet als Parameter ein EventHandler<ActionEvent>. EventHandler<T> ist ein Interface mit einer Methode void handle(T)

Den Code könnte man also auch so schreiben:
Java:
timer2.setOnFinished(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        Platform.exit();
    }
});
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben