Проблема в том, что вы сокращаете время.Это означает, что пока количество полных секунд остается делимым на 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();
}