Я заканчиваю свою игру на JavaFX, в которой одной из функций является фоновая музыка c, а также звуковые эффекты, добавленные к различным действиям. В какой-то момент игры, если вы выиграете, будет воспроизводиться специальный звуковой эффект.
Но вот в чем проблема:
Когда победный звуковой эффект закончится, я бы как для фоновой музыки c, чтобы приостановить и воспроизвести снова после завершения этого звукового эффекта. Я уже пытался манипулировать потоками, но каждый раз, когда я это делаю, выскакивает исключение.
Вот код, который может вас заинтересовать:
// That is the method in which upon winning (first "else" segment) you hear the sound effect
public void checkAction() {
if (checkNumberOfGuesses < OptionsController.numberOfAllowedTries) {
int guess = Integer.parseInt(guessNumberInputField.getText());
if (guess < theNumber) {
resultLabel.setText("Too low");
wrongGuessSoundEffect();
} else if (guess > theNumber) {
resultLabel.setText("Too high");
wrongGuessSoundEffect();
} else {
resultLabel.setText("Correct!\nYou win!");
correctGuessSoundEffect(); // <- invoking the method that runs sound effect
playAgainPane.setVisible(true);
checkNumberOfGuesses = 0;
}
} else {
resultLabel.setText("You loose...");
gameOverSoundEffect();
playAgainPane.setVisible(true);
checkNumberOfGuesses = 0;
}
checkNumberOfGuesses++;
}
public void correctGuessSoundEffect() {
String correctGuessFilePath = "C:/Users/Stanisław/IdeaProjects/GuessingApp_GUI/src/com/javafx/sounds/correctGuess2.mp3";
Media correctGuessSound = new Media(new File(correctGuessFilePath).toURI().toString());
correctGuessPlayer = new MediaPlayer(correctGuessSound);
correctGuessPlayer.play();
}
// THIS method is located in different class than the other two
public static void backgroundMusic(String backgroundMusicPath) throws InterruptedException {
Media backgroundMusic = new Media(Paths.get(backgroundMusicPath).toUri().toString());
backgroundMusicPlayer = new MediaPlayer(backgroundMusic);
backgroundMusicPlayer.setCycleCount(MediaPlayer.INDEFINITE);
backgroundMusicPlayer.play();
}
Другое возможное осложнение заключается в том, что backgroundMusi c () метод запускается из основного класса с помощью метода start (Stage primaryStage) . Я должен держать его там, чтобы музыка c играла в каждом окне (которых у меня в игре всего 5).
Я только начал программировать, поэтому решение может быть тривиальным. Я буду благодарен за всю помощь, которую я могу получить.