JavaFX 2.3 TranslateTransition

0

Witam, mam taki problem, dlaczego ta animacja zadziała tylko raz dla każdego kontenera z addSlideList? Robię program do prezentacji multimedialnych i chcę aby kolejne slajdy nachodził z lewej strony na wcześniejszy, ale to działa tylko raz. Jak cofnę się do wcześniejszego slajdu(metoda previousSlideWork();)i przejdę jeszcze raz do następnego to wyświetli się on natychmiast bez animacji.

public void nextSlideWork() {
        
        if (addSlideList != null && slideNumber < addSlideList.size() - 1) {
            
            slideNumber++;

            addSlideList.get(slideNumber).setLayoutX(1200);
            rootWork.getChildren().add(addSlideList.get(slideNumber));

            nextTransition = new TranslateTransition();
            nextTransition.setNode(addSlideList.get(slideNumber));
            nextTransition.setDuration(Duration.millis(2000)); 
            nextTransition.setToX(-1200);
            nextTransition.setOnFinished(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent t) { 
                    
                    //Usuwanie wcześniejszego slajdu po skończonej animacji
                    rootWork.getChildren().remove(addSlideList.get(slideNumber - 1));// 
                    labelSlideNumber.setText(Integer.toString(slideNumber + 1) + "/" + Integer.toString(addSlideList.size()));
                    System.out.println("SLIDE_NUMBER==========" + slideNumber + ", rootWork===========" + rootWork.getChildren()); 

                }
            });
            
            nextTransition.play(); // start animacji

        } else {
            System.out.println("Brak slajdu !");
        }
    }
0

A nie powinieneś tego odpalić w pętli?

0

Wytłumaczę może o co mi chodzi. Robię program do prezentacji, który będzie się składał z slajdów. Każdy slajd to oddzielny kontener który będzie zawierał np. tekst, zdjęcia i jakieś tło. Wszystkie slajdy z zapisane w Liście addSlideList, w momencie jak przechodzę do następnego slajdu to bieżący slajd usuwam z głównego kontenera i dodaje kolejny z listy. Dodałem prostą animację, która powoduję to, że jeden slajd nachodzi na drugi i dopiero jak animacja dobiegnie końca to slajd wcześniejszy zostaje usunięty. Problem polega na tym, że te przejście działa tylko raz dla każdego slajdu. Nie wyskakuje mi żadne wyjątek, po prostu slajdu są zastępowane natychmiast bez animacji. Sama animacja niby startuję bo po 2s(tyle trwa animacja), wywoływana jest metoda public void handle(ActionEvent t), ale samego przejścia nie widać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1