2016-06-11 6 views
1

Wie kann man den Schieberegler bewegen, wenn das Video abgespielt wird?javafx video player timeSlider

Initialisierung:

BorderPane border = new BorderPane(); 
HBox bar = new HBox(10); 
//Button play = new Button("Play"); 
//Button pause = new Button("Pause"); 

Medien:

Media media = new Media(Paths.get("C://video.mp4").toUri().toString()); 
    MediaPlayer player = new MediaPlayer(media); 
    MediaView mediaView = new MediaView(player); 

Positionierung:

bar.getChildren().addAll(play,pause,timeSlider); 
    bar.setAlignment(Pos.CENTER); 
    border.setCenter(mediaView); 
    border.setBottom(bar); 

Irgendwelche Vorschläge, wie mein Slider bewegen als Videospiele zu machen?

Edit:

gefunden Antwort:

player.currentTimeProperty().addListener((obs, oldTime, newTime) -> { 
     if (!timeSlider.isValueChanging()) { 
      timeSlider.setValue(newTime.toSeconds()); 
     } 
    }); 
+1

Versuchen Sie, die [Oracle Medien Tutorial] (http://docs.oracle.com/javase/8/javafx/media-tutorial/playercontrol.htm), es enthält Anweisungen und Quelle Code zum Verknüpfen eines Sliders mit einem Video. – jewelsea

Antwort

0

ich auf ein ähnliches Problem gerade arbeite jetzt. Dies sollte für Sie arbeiten:

// Listen to the slider. When it changes, seek with the player. 
// MediaPlayer.seek does nothing when the player is stopped, so the play/pause button's handler 
// always sets the start time to the slider's current value, and then resets it to 0 after starting the player. 
InvalidationListener sliderChangeListener = o-> { 
    Duration seekTo = Duration.seconds(timeSlider.getValue()); 
    player.seek(seekTo); 
}); 
timeSlider.valueProperty().addListener(sliderChangeListener); 

// Link the player's time to the slider 
player.currentTimeProperty().addListener(l-> { 
    // Temporarily remove the listener on the slider, so it doesn't respond to the change in playback time 
    // I thought timeSlider.isValueChanging() would be useful for this, but it seems to get stuck at true 
    // if the user slides the slider instead of just clicking a position on it. 
    timeSlider.valueProperty().removeListener(sliderChangeListener); 

    // Keep timeText's text up to date with the slider position. 
    Duration currentTime = player.getCurrentTime(); 
    int value = (int) currentTime.toSeconds(); 
    timeSlider.setValue(value);  

    // Re-add the slider listener 
    timeSlider.valueProperty().addListener(sliderChangeListener); 
});