2016-05-10 5 views
0

Код ниже показывает часть функции моего последовательного перехода, я хочу использовать Pslideshow.pause(), чтобы пользователь мог приостановить слайд и продолжить воспроизведение слайда.как приостановить последовательный переход JAVAFX

Но я понял, как только я использую Pslideshow.play(), статус изменения Pslideshow немедленно прекращается, когда я нажимаю на панель, которую я создаю для отображения слайда.

Что мне делать, чтобы пользователь мог приостановить и снова воспроизвести мой последовательный переход? Заранее спасибо!

public void start(){ 
for (Label slide : LabelSlides) { 

    SequentialTransition sequentialTransition = new SequentialTransition(); 
    FadeTransition fadeIn = getFadeTransition(slide, 0.0, 1.0, 2000); 
    PauseTransition stayOn = new PauseTransition(Duration.millis(2000)); 
    FadeTransition fadeOut = getFadeTransition(slide, 1.0, 0.0, 2000); 

    sequentialTransition.getChildren().addAll(fadeIn, stayOn, fadeOut); 
    slide.setOpacity(0); 
    this.root.setStyle("-fx-background-color: Black"); 
    this.root.getChildren().add(slide); 
    Pslideshow.getChildren().add(sequentialTransition); 
    } 

    Pslideshow.play(); 
} 

@FXML 
public void PlaySlide(ActionEvent event) throws IOException 
{ Node node=(Node) event.getSource(); 
    Stage stage=(Stage) node.getScene().getWindow(); 
    Stage newStage = new Stage(); 
    newStage.setWidth(stage.getWidth()); 
    newStage.setHeight(stage.getHeight()); 
    Scene_3Controller simpleSlideShow = new Scene_3Controller();  
    Scene scene = new Scene(simpleSlideShow.getRoot()); 
    MediaP.play(); 
    simpleSlideShow.start();  
    scene.setOnMouseClicked(new ClickHandler());  
    newStage.setScene(scene); 
    newStage.show(); 
} 
+0

Ваш следующий слайд ожидает ввода пользователем? – ItachiUchiha

+0

@ItachiUchiha Нет, я сохранил свои изображения в LabelSlides [], я просто извлек из db –

+0

Я должен был быть ясен, задавая вопрос. Когда вы говорите: '' Pslideshow.play() 'изменяет статус изменения Pslideshow на Stopped немедленно". Я не уверен, что это должно произойти, как именно вы проверяете статус? – ItachiUchiha

ответ

0

код копируется из SequentialTransitionStatus сути, которую я создал, чтобы объяснить, как SequentialTransition может изменить различный статус т.е. RUNNING, PAUSED, STOPPED.

import javafx.animation.FadeTransition; 
import javafx.animation.PauseTransition; 
import javafx.animation.SequentialTransition; 
import javafx.application.Application; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.layout.HBox; 
import javafx.scene.layout.VBox; 
import javafx.stage.Stage; 
import javafx.util.Duration; 

public class SequentialTransitionStatus extends Application { 

    @Override 
    public void start(Stage primaryStage) { 

     Label slide = new Label("slide"); 
     slide.setOpacity(0); 

     FadeTransition fadeIn = new FadeTransition(Duration.millis(2000), slide); 
     fadeIn.setFromValue(0); 
     fadeIn.setToValue(1); 
     PauseTransition stayOn = new PauseTransition(Duration.millis(1000)); 
     FadeTransition fadeOut = new FadeTransition(Duration.millis(2000), slide); 
     fadeOut.setFromValue(1); 
     fadeOut.setToValue(0); 
     SequentialTransition sequentialTransition = new SequentialTransition(); 
     sequentialTransition.getChildren().addAll(fadeIn, stayOn, fadeOut); 

     Label status = new Label(); 
     status.textProperty().bind(sequentialTransition.statusProperty().asString()); 

     Button play = new Button("Play"); 
     play.setOnAction(event -> sequentialTransition.play()); 

     Button pause = new Button("Pause"); 
     pause.setOnAction(event -> sequentialTransition.pause()); 

     HBox hBox = new HBox(10, play, pause); 
     hBox.setAlignment(Pos.CENTER); 

     VBox box = new VBox(20, slide, hBox, status); 
     box.setAlignment(Pos.CENTER); 

     Scene scene = new Scene(box, 300, 250); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 

    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
}