У меня проблема с исполнением песен. У меня есть список звуковых дорожек, загруженных из filechooser, помещенных в TableView и хранящихся в списке (игроках). getSelectionModel возьмет выбранный звуковой файл, и я запустил его, насколько это хорошо. если вы не останавливаетесь, и я выбираю другой аудиофайл и посылаю вам играть. Звуки накладываются друг на друга. Как я могу остановить выполнение предыдущего файла, избегая при этом множителя?Как предотвратить многократное воспроизведение с использованием медиапланера javafx?
код addFileAudio:
Media media;
final List<MediaPlayer> players = new ArrayList<>();
String fileName;
MediaPlayer mediaPlayer;
public void addFileAudio(ActionEvent event) {
BasicFileAttributes attr = null;
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("Seleziona il file da caricare");
fileChooser.getExtensionFilters().addAll(
new ExtensionFilter("Audio Files","*.wav","*.mp3"));
File selectedFile = fileChooser.showOpenDialog(new Stage());
if (selectedFile != null) {
media = new Media(new File(selectedFile.getAbsolutePath()).toURI().toString());
mediaPlayer = new MediaPlayer(media);
players.add(mediaPlayer);
MediaView mediaView = new MediaView(mediaPlayer);
mediaView.setMediaPlayer(mediaPlayer);
Path pathFile = Paths.get(selectedFile.toURI());
try {
attr = Files.readAttributes(pathFile, BasicFileAttributes.class);
} catch (IOException e) {
Exception.showError(1);
}
}else{
Exception.showWarning(0);
}
String fileName = selectedFile.getName();
String data = attr.creationTime().toString().substring(0,10);
Table1.getItems().add(new PopulateTable(Table1.getItems().size()+1, fileName, data));
}
код кнопки воспроизведения:
void play(ActionEvent event) {
MediaPlayer player = players.get(Table1.getSelectionModel().getSelectedIndex()); Status status = player.getStatus();
if (status!= Status.PLAYING) {
player.play();
} else {
MediaPlayer playerNext = players.get(Table1.getSelectionModel().getSelectedIndex()); player.stop(); playerNext.play(); }
Статус статуса не должен находиться внутри вашего метода play(). Он должен быть статичным и глобальным. Затем, как только вы нажмете play(), вы начнете воспроизводить песню, а затем установите статус на воспроизведение – Sedrick