Проблема по модулю в приостановке и воспроизведении медиаплеера JavaFX - PullRequest
0 голосов
/ 15 декабря 2018

У меня проблема с моим кодом.Воспроизведение фильма занимает 5 кликов.

Мой код каждые 15 секунд медиаплеер будет автоматически останавливаться.Но после паузы кнопка воспроизведения занимает 5 нажатий, чтобы возобновить воспроизведение видео.

     //auto pause every 15 seconds

    int moduloTime = (int) (mediaPlayer.getCurrentTime().toSeconds() % 15);

          if(moduloTime == 0){
              mediaPlayer.pause();
             }else{
               mediaPlayer.play();
             }

1 Ответ

0 голосов
/ 16 декабря 2018

Проблема в том, что вы сокращаете время.Это означает, что пока количество полных секунд остается делимым на 15, игрок останавливается снова и снова.Вам следует сохранить последнее значение, для которого вы остановились, в каком-либо поле и не допускать повторной остановки вашего кода в течение этой секунды после нажатия кнопки «Продолжить».

private static final String URL = ...;

private MediaPlayer mediaPlayer;

public void start(Stage primaryStage) {
    Media media = new Media(URL);
    mediaPlayer = new MediaPlayer(media);
    mediaPlayer.currentTimeProperty().addListener(new ChangeListener<Duration>() {

        private int lastStop = 0;

        @Override
        public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) {
            int value = (int) newValue.toSeconds();
            if (lastStop != value && value % 15 == 0) {
                lastStop = value; // prevent this "stop" from triggering the pause again
                mediaPlayer.pause();
            }
        }

    });

    Button btn = new Button("play");
    btn.setOnAction(evt -> mediaPlayer.play());
    Scene scene = new Scene(new StackPane(btn), 300, 300);
    primaryStage.setScene(scene);
    primaryStage.show();
}
...