Ho già visto How to wait for a transition to end in javafx 2.1? ma non risolve il mio problema.Per la transizione su ImageView in JavaFX
Ho una lista di oggetti ImageView, e voglio scorrere questa lista e effettuare le seguenti operazioni su ogni 'slide' del listino:
- fade in
- soggiorno per alcuni secondi
- fade out
ho il seguente codice nel posto ma poiché la transizione è asincrona, il ciclo applica la transizione a tutte le diapositive '' allo stesso tempo:
// 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;
}
Tutte le idee su come posso animare questi Elenco dei ImageView oggetti uno ad uno (indipendentemente dal numero di ImageViews ci sono sulla lista, in modo da non voglio il codice difficile). Grazie.
Grazie Sebastian! :) Non l'ho provato (lo farò quando torno a casa) ma ha senso lol .. sono così stupido .. grazie mille! :) Ti aggiornerò una volta arrivato a casa .. –
Nessun problema. Se potessi aggiungere, preferirei usare Timer e TimerTask per far scattare le diapositive successive oltre a JavaFX, perché questa scala è molto migliore. Ho scritto una presentazione per me stesso poche settimane fa, e l'aggiunta di pulsanti e/o l'interruzione della presentazione è qualcosa che potresti voler aggiungere in seguito alla tua applicazione. – Sebastian
Ciao Bastian, ho provato la soluzione che hai suggerito e sfortunatamente non fa proprio il trucco. Quando eseguo il codice, vedo solo l'ultima diapositiva nell'elenco. Si visualizza in primo piano e quindi si dissolve e scompare lasciando lo schermo vuoto. Penso di aver bisogno di giocare la transizione per ogni diapositiva che non sta succedendo qui ... qualche idea? Grazie mille :) –