Już patrzyłem na How to wait for a transition to end in javafx 2.1?, ale to nie do końca rozwiązuje mój problem.W celu przejścia na ImageView w JavaFX
Mam listę obiektów ImageView i chcę wykonać iterację tej listy i wykonaj następujące czynności na każdym „slide” listy:
- Fade In
- pobyt przez kilka sekund
- zanikanie
mam następujący kod w miejscu, ale od czasu przejścia jest asynchroniczna, pętla dotyczy przejścia do wszystkich „slajdy” w tym samym czasie:
// 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;
}
Wszelkie pomysły, w jaki sposób można animować te Lista ImageView obiekty pojedynczo (niezależnie od liczby ImageViews nie znajdują się na liście, więc nie chcą ciężko kodem niego). Dzięki.
Dzięki Sebastian! :) Nie próbowałem tego (zrobię kiedy dostanę się do domu), ale ma sens lol .. jestem taki głupi .. dziękuję bardzo! :) Będę aktualizował, gdy tylko dotrę do domu .. –
Bez problemu. Jeśli mógłbym dodać, wolałbym używać Timera i TimerTask, aby wyzwalać kolejne slajdy poza JavaFX, ponieważ skaluje się to znacznie lepiej. Kilka tygodni temu napisałem sam pokaz slajdów, a dodanie przycisków i lub zatrzymanie pokazu slajdów to coś, co możesz dodać później do swojej aplikacji. – Sebastian
Cześć Bastian, próbowałem rozwiązania, które zasugerowałeś i niestety to nie wystarczy. Kiedy uruchamiam kod, widzę tylko ostatni slajd na liście ... pokazuje się z przodu, a następnie znika i zanika, pozostawiając ekran pusty. Myślę, że muszę zagrać w przejście dla każdego slajdu, który się tutaj nie dzieje .. jakieś pomysły? Wielkie dzięki: –