Почему представление изображения появляется после воспроизведения аудио, тогда как видимость изображения устанавливается в значение true, прежде чем звук воспроизводится в javafx? - PullRequest
0 голосов
/ 26 октября 2019

Я пытался заполучить 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), изображение ведет себя так, как ожидалось. Кто-нибудь может помочь и предоставить пример кода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...