2016-07-27 118 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