Я пытался заполучить JavaFx. У меня есть проблема, которую я не могу решить самостоятельно. На моей сцене есть кнопка воспроизведения, которая должна воспроизводить mp3-файл. MP3 должен начать воспроизводиться после того, как изображение GIF появится на сцене, но по какой-то неизвестной мне причине все наоборот: сначала воспроизводится звук, а затем появляется GIF.
Код выглядит примерно так в контроллере (упрощенная версия. Я опустил код, который может размыть вещи:
public void buttonClicked(ActionEvent actionEvent) throws MalformedURLException {
Button bt = (Button) actionEvent.getSource();
switch (bt.getId()) {
case "btPlay":
Optional<Randomize> firstResult = luckyNumbers.stream().filter(s -> s.getAnswerWasCorrect().equals(false)).findAny();
if (firstResult.isPresent()) {
showSoundWave(); //this method gets the image to be seen.
playLuckyNumbers(firstResult.get().getRandomLong()); // this method plays the audio
} else {
luckyNumbers.clear();
Alert newAlert = new Alert(Alert.AlertType.INFORMATION);
newAlert.setHeaderText("We've run out of numbers");
newAlert.show();
btStart.setDisable(false);
groupedPlayRepeatButtons.setDisable(false);
}
break;
}
}
Вот код, который позволяет увидеть изображение, которое будет виднокогда нажата кнопка воспроизведения:
private void showSoundWave() {
imgSound.setVisible(true);
FadeTransition ft = new FadeTransition();
ft.setNode(imgSound);
ft.setFromValue(1.0);
ft.setToValue(0);
ft.setDuration(Duration.millis(5000));
ft.setCycleCount(1);
ft.play();
}
Когда я удаляю строку с кодом, воспроизводящим звук (метод playLuckyNumbers), изображение ведет себя так, как ожидалось. Кто-нибудь может помочь и предоставить пример кода?