• Wir präsentieren Dir heute ein Stellenangebot für einen Frontend-Entwickler Angular / Java in Braunschweig. Hier geht es zur Jobanzeige

JavaFX Timeline KeyFrame Reihenfolge

H

hk

Aktives Mitglied
Hallo Forum,
Ich habe eine Timeline welche einen Text anzeigt und langsam ausblendet (das funktioniert). Dann sollen die Elemente unsichtbar gemacht werden, da gibt es dann Probleme:
Gebe ich in kf_2 Duration 0 an werden die Elemente nicht unsichtbar,
Gebe ich in kf_2 Duration 0.1 an erfolgt auch die Textanzeige nur über 0.1 Sekunden.
Hier der Code:
Java:
protected static void showShortMsg(String txt) {
    shortMsg.setText(txt);
    KeyValue fade_1 = new KeyValue(shortMsg.opacityProperty(), 1.0);
    KeyValue fade_2 = new KeyValue(shortMsg.opacityProperty(), 0.0);
    KeyFrame kf_1 = new KeyFrame(Duration.seconds(2), fade_1, fade_2);
    KeyValue visi_1 = new KeyValue(shortMsg.visibleProperty(), false);
    KeyValue visi_2 = new KeyValue(hBox.visibleProperty(), false);
    KeyFrame kf_2 = new KeyFrame(Duration.seconds(0.1), visi_1, visi_2);
    Timeline tm = new Timeline();
    tm.getKeyFrames().addAll(kf_1, kf_2);
    shortMsg.setVisible(true);
    hBox.setVisible(true);
    tm.play();
  }
lg heinz
 
H

hk

Aktives Mitglied
Hallo Forum,
Ich habe eine Timeline welche einen Text anzeigt und langsam ausblendet (das funktioniert). Dann sollen die Elemente unsichtbar gemacht werden, da gibt es dann Probleme:
Gebe ich in kf_2 Duration 0 an werden die Elemente nicht unsichtbar,
Gebe ich in kf_2 Duration 0.1 an erfolgt auch die Textanzeige nur über 0.1 Sekunden.
Hier der Code:
Java:
protected static void showShortMsg(String txt) {
    shortMsg.setText(txt);
    KeyValue fade_1 = new KeyValue(shortMsg.opacityProperty(), 1.0);
    KeyValue fade_2 = new KeyValue(shortMsg.opacityProperty(), 0.0);
    KeyFrame kf_1 = new KeyFrame(Duration.seconds(2), fade_1, fade_2);
    KeyValue visi_1 = new KeyValue(shortMsg.visibleProperty(), false);
    KeyValue visi_2 = new KeyValue(hBox.visibleProperty(), false);
    KeyFrame kf_2 = new KeyFrame(Duration.seconds(0.1), visi_1, visi_2);
    Timeline tm = new Timeline();
    tm.getKeyFrames().addAll(kf_1, kf_2);
    shortMsg.setVisible(true);
    hBox.setVisible(true);
    tm.play();
  }
lg heinz
Ich habe nun alle KeyValue in einen KeyFrame gesteckt. Das funktioniert nun, aber nur einmal. Bei jeden weiteren Versuch passiert nichts. Der Code wird ohne Wirkung abgearbeitet. Das ist noch seltsamer.
 
dzim

dzim

Top Contributor
Die Antwort lautet vermutlich: playFromStart() oder replay oder reset vor dem Start. "Play" führt die Timeline von dem Frame aus fort, wo sie stehen geblieben ist. Du bist am Ende angekommen und drückst play - bleibst also am Ende stehen.
 
H

hk

Aktives Mitglied
Die Antwort lautet vermutlich: playFromStart() oder replay oder reset vor dem Start. "Play" führt die Timeline von dem Frame aus fort, wo sie stehen geblieben ist. Du bist am Ende angekommen und drückst play - bleibst also am Ende stehen.
Ja, das hat geholfen. Der Aufruf kann nun wiederholt werden. Aber der Effekt ist nun, dass der Text nicht mehr verblasst sondern bis zum Ende unverändert bleibt.
Ich sende daher nochmals den aktuellen Code:
Java:
// Die HBox und die darin befindliche Text-Node werden
  // sichtbar gemacht.
  // Die Text-Node wird nun angezeigt und soll in 3 Sekunden
  // verblassen.
  // Dann soll die HBox und die Text-Node wieder unsichtbar
  // gemacht werden.
  protected static void showShortMsg(String txt) {
    shortMsg.setText(txt);
    shortMsg.setVisible(true);
    hBox.setVisible(true);
    KeyValue fade_1 = new KeyValue(shortMsg.opacityProperty(), 1.0);
    KeyValue fade_2 = new KeyValue(shortMsg.opacityProperty(), 0.0);
    KeyValue visi_1 = new KeyValue(shortMsg.visibleProperty(), false);
    KeyValue visi_2 = new KeyValue(hBox.visibleProperty(), false);
    KeyFrame kf_1 = new KeyFrame(Duration.seconds(3), fade_1, fade_2);
    KeyFrame kf_2 = new KeyFrame(Duration.seconds(3), visi_1, visi_2); // <-- Zeit unklar
    Timeline tm = new Timeline();
    tm.setCycleCount(1);
    tm.getKeyFrames().addAll(kf_1, kf_2);
    tm.playFromStart();
  }
 
dzim

dzim

Top Contributor
Ich schaffe meist nur mit den vorbereiteten Transitionen. Selten mit Timelines. Dort halt FadeTransition (setzt opacity) und dann im onFinish-Handler halt visibility/managed aktivieren/deaktivieren.
 
H

hk

Aktives Mitglied
So, die Probleme sind nun alle gelöst:
- Zum ersten ist es für einen weiteren Durchlauf notwendig den ursprünglichen Wert der zu animierenden Eigenschaft wiederherzustellen.
- Zum zweiten ist es wichtig auch den "setCycleCount()" jedenfalls anzugeben, dann funktionierts (jedenfalls bei mir).
Hier die finale Version:
Java:
protected static void showShortMsg(String txt) {
    shortMsg.setText(txt);
    shortMsg.setVisible(true);
    shortMsg.setOpacity(1.0);
    hBox.setVisible(true);
    KeyValue fade_1 = new KeyValue(shortMsg.opacityProperty(), 1.0);
    KeyValue fade_2 = new KeyValue(shortMsg.opacityProperty(), 0.0);
    KeyValue visi_1 = new KeyValue(shortMsg.visibleProperty(), false);
    KeyValue visi_2 = new KeyValue(hBox.visibleProperty(), false);
    KeyFrame kf_1 = new KeyFrame(Duration.seconds(3), fade_1, fade_2, visi_1, visi_2);
    Timeline tm = new Timeline();
    tm.getKeyFrames().addAll(kf_1);
    tm.setCycleCount(1);
    tm.playFromStart();
  } //end showShortMsg ------------------------------------
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
missy72 JavaFX TimeLine / KeyFrame AWT, Swing, JavaFX & SWT 4
J JavaFX Stoppuhr mit javafx.timeline AWT, Swing, JavaFX & SWT 2
F JavaFX Timeline Animation soll X- und Y-Position während Animation ändern AWT, Swing, JavaFX & SWT 2
B Rechteck Mit Hilfe Von Timeline, KeyFrames animieren AWT, Swing, JavaFX & SWT 3
B Java Media Frame (TimeLine) AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
K Swing Reihenfolge bei ActionListenern AWT, Swing, JavaFX & SWT 1
J Reihenfolge der Punkte in Vielecken AWT, Swing, JavaFX & SWT 3
C Swing Reihenfolge der Initialisierung von Komponenten AWT, Swing, JavaFX & SWT 6
GUI-Programmer JFilechooser, mehrere Datein selektieren und Reihenfolge (2) AWT, Swing, JavaFX & SWT 8
T Java-Anwendung arbeitet Programm in seltsamer Reihenfolge ab AWT, Swing, JavaFX & SWT 3
M Komponenten in anderer Reihenfolge anzeigen AWT, Swing, JavaFX & SWT 4
lumo LayoutManager SWT GridLayout - Reihenfolge ändern AWT, Swing, JavaFX & SWT 7
P Swing Hierachie oder Reihenfolge von Komponenten AWT, Swing, JavaFX & SWT 5
C Swing Text eines JButton mit String definieren? Reihenfolge? AWT, Swing, JavaFX & SWT 6
D Swing JOptionPane + FileChooser .. Reihenfolge wichtig!? AWT, Swing, JavaFX & SWT 7
A Reihenfolge von ActionListener und InputVerifier AWT, Swing, JavaFX & SWT 4
P JList: Reihenfolge der Elemente per Drag'n'Drop ändern. AWT, Swing, JavaFX & SWT 9
T Tab Reihenfolge bei JTextFeldern ändern AWT, Swing, JavaFX & SWT 4
H Reihenfolge z.B. KeyPressed in Child/Parent AWT, Swing, JavaFX & SWT 11
G Reihenfolge von Events AWT, Swing, JavaFX & SWT 4
S Labels und Button übereinander --> Reihenfolge? AWT, Swing, JavaFX & SWT 4
M Tab-Reihenfolge aber mit SWT AWT, Swing, JavaFX & SWT 1
K Tab-Reihenfolge AWT, Swing, JavaFX & SWT 7
T "globaler" keylistener/tab-reihenfolge/insertcurso AWT, Swing, JavaFX & SWT 5
B JTree - Reihenfolge der Nodes verändern AWT, Swing, JavaFX & SWT 3
N Fokus Reihenfolge ändern AWT, Swing, JavaFX & SWT 12
bernd Reihenfolge beim springen mit Tab-Taste ändern! AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Anzeige

Neue Themen


Oben