【问题标题】:Modulo problem in pausing and playing media player JavaFX暂停和播放媒体播放器JavaFX中的模数问题
【发布时间】:2018-12-15 17:43:33
【问题描述】:

我的代码有问题。播放按钮需要点击 5 次才能播放电影。

我的代码是媒体播放器每 15 秒自动暂停一次。但暂停后,播放按钮需要点击 5 次才能再次播放视频。

     //auto pause every 15 seconds

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

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

【问题讨论】:

标签: javafx media-player modulo


【解决方案1】:

问题是你把时间四舍五入了。这意味着只要完整的秒数仍然可以被 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();
}

【讨论】:

  • 哦,我明白了。我的错误是它没有保存最后一个值。我会尝试解决这个问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多