2016-07-27 122 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(); 

检查MUSIC方法:

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

我也尝试了musicPlayer.play();为好。

编辑

是的,我相信if语句运行中的代码,我与println检查它,并且他们打印出来。 music布尔值只是程序/游戏中设置的控制器。

+0

如果在执行'checkMusic'命中'musicPlayer.setAutoPlay(真);'应该罚款。你确定你的控制台没有任何“哎呀:..”吗?仅仅因为如果在使用getResource时使用前导斜杠(“/”),它将使用项目根作为基础。调用类和MP3资源如何放置在目录结构中? – DVarga

+0

它肯定会执行,因为我已经检查过'println's。而且该目录应该没问题,因为它在我使用.wav文件时起作用。它位于bin文件夹中,然后位于名为资源的文件夹中以及其他内容。据我所知,控制台中没有“哎呀”,因为我已经处理了大部分问题。 (相信我有几个,因为我对JavaFX的新变化很大) – 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