2016-07-27 2 views
1

Я довольно новичок в JavaFX и недавно хотел воспроизвести аудио с файлом MP3, а не с WAV. Из того, что я могу сказать, я делаю все правильно, и я не получаю никаких ошибок, но я также не слышу никакого звука.Звук JavaFX, кажется, не играет

Я выложу части моего кода, которые имеют значение ниже. Если я что-то пропустил, дайте мне знать. Благодарю.

try { 
    URL sound = getClass().getResource("/resources/origin.mp3"); 
    Media hit = new Media(sound.toExternalForm()); 
    musicPlayer = new MediaPlayer(hit); 
    musicPlayer.setVolume(1.0); 
} 
catch(Exception e) { 
    System.out.println("whoops: " + e); 
} 
checkMusic(); 

Метод проверки Музыка:

public void checkMusic() { 
    if(music) 
     musicPlayer.setAutoPlay(true); 
    else 
     musicPlayer.stop(); 
} 

Я также попытался просто musicPlayer.play();, а также.

EDIT

И да, я уверен, что код в прогонах if заявления, я проверил его с println, и они распечатать. music boolean - это просто контроллер для настроек в программе/игре.

+0

Если исполнение в '' checkMusic' хиты musicPlayer.setAutoPlay (истинный), 'это должно быть в порядке. Вы уверены, что у вас нет никаких «криков: ..» в консоли? Просто потому, что если вы используете ведущую косую черту («/») при использовании getResource, она будет использовать корень проекта как базу. Как класс вызова и ресурс MP3 помещаются в структуру каталогов? – DVarga

+0

Это определенно выполняется, потому что я проверил с 'println'. И каталог должен быть в порядке, потому что он работал, когда я использовал WAV-файл. Он находится в папке bin, затем в папке, называемой ресурсами, и другими вещами. И насколько я могу судить, в консоли нет «криков», потому что я уже справлялся с большинством проблем. (И, поверьте мне, было несколько из-за того, что я новый для JavaFX lol) – Ryan

+0

@DVarga ой, а также я мог что-то найти. Когда я делаю 'System.out.println (hit.getDuration();' он говорит неизвестно, а 'getTracks()' также неизвестен. Может ли это что-нибудь значить? – Ryan

ответ

-1

вместо

Media hit = new Media(sound.toExternalForm()); 

попробовать это:

final Media media = new Media(sound.toString()); 
+0

Пробовал и не изменял. – Ryan