Übergang zu übergehen, habe ich schon How to wait for a transition to end in javafx 2.1? betrachtet, aber es löst nicht ganz mein Problem.Um auf ImageView in JavaFX
Ich habe eine Liste der Image Objekte, und ich möchte durch diese Liste zu durchlaufen und die folgenden Aktionen auf jedem ‚slide‘ der Liste durchführen:
- verblassen in
- Aufenthalt für ein paar Sekunden
- verblassen
I habe die folgenden Code anstelle aus, aber da der Übergang asynchron ist, gilt die Schleife um den Übergang zu allen ‚Folien‘ zur gleichen Zeit:
// The method I am running in my class
public void start() {
for (ImageView slide : slides) {
SequentialTransition sequentialTransition = new SequentialTransition();
FadeTransition fadeIn = Transition.getFadeTransition(slide, 0.0, 1.0, 2000);
FadeTransition stayOn = Transition.getFadeTransition(slide, 1.0, 1.0, 2000);
FadeTransition fadeOut = Transition.getFadeTransition(slide, 1.0, 0.0, 2000);
sequentialTransition.getChildren().addAll(fadeIn, stayOn, fadeOut);
this.root.getChildren().add(slide);
sequentialTransition.play();
}
}
// the method in the Transition helper class:
public static FadeTransition getFadeTransition(ImageView imageView, double fromValue, double toValue, int durationInMilliseconds) {
FadeTransition ft = new FadeTransition(Duration.millis(durationInMilliseconds), imageView);
ft.setFromValue(fromValue);
ft.setToValue(toValue);
return ft;
}
Irgendwelche Ideen auf, wie ich diese Liste der Image eins nach dem anderen Objekte animieren kann (unabhängig von der Anzahl der ImageViews dort auf der Liste sind, so will ich nicht zu hart Code it). Vielen Dank.
Dank Sebastian:
Eine vollständige Beispielanwendung dafür könnte wie folgt aussehen! :) Ich habe das nicht versucht (werde tun, wenn ich nach Hause komme), aber es macht Sinn lol .. ich bin so dumm .. vielen Dank! :) Ich werde dich aktualisieren, sobald ich nach Hause komme. –
Kein Problem. Wenn ich hinzufügen möchte, würde ich lieber Timer und TimerTask verwenden, um die nächsten Folien außer JavaFX auszulösen, da dies viel besser skaliert. Ich habe vor ein paar Wochen eine Diashow für mich selbst geschrieben, und das Hinzufügen von Schaltflächen und/oder das Stoppen der Diashow ist etwas, was Sie später Ihrer Anwendung hinzufügen möchten. – Sebastian
Hallo Bastian, ich habe die von dir vorgeschlagene Lösung ausprobiert und leider funktioniert es nicht ganz. Wenn ich den Code ausführe, sehe ich nur die letzte Folie in der Liste. Sie wird vorne angezeigt und dann blendet sie sich ein und wird ausgeblendet, wobei der Bildschirm leer bleibt. Ich denke, ich muss den Übergang für jede Folie spielen, die hier nicht passiert .. irgendwelche Ideen? Vielen Dank :) –