聲音是1個游戲相當重要的部份。
上1次我談了利用AudioClip 簡單兩行代碼來播放聲音(http://blog.csdn.net/cnmm22/article/details/44674173)。今天我介紹1下另外一種方法,利用AudioStream。
使用這兩個方法進程中定位1個資源的進程要難于使用方法本身。
上1次我們給 AudioClip 傳進1個 URL 從而定位1個資源,這1次,我們延續這個思路,完善1下怎樣在java中定位1個資源文件。
這1次。我換1種寫法:
String path = new File(getClass().getClassLoader().getResource(“”).toURI()).getPath();
FileInputStream fileau = new FileInputStream(path + “sounds11.mp3”);
這次我們沒有傳 URL,但首先一樣利用反射機制,getClass().getClassLoader().getResource.toURI()).getPath(),拿到項目 bin 文件夾在電腦里的絕對位置,由于是反射,所以在文件被移動后依然能找到資源。 以后的 path + “sounds11.mp3” 是文件本身的urI,其中sounds/1 文件夾為示范,代表在bin 下滴任意路徑。注意其中反斜杠由雙反斜杠代替。
我們把這個path (String name),傳給 FileInputStream,從而得到我們要播放 AudioStream 的資源文件。
接下來是播放代碼:
AudioStream as = new AudioStream(fileau);
AudioPlayer.player.start(as);
假定我們這次還是用 URL來定位1個資源文件,參考代碼為:
URL u = XXX.class.getClassLoader().getResource(“sounds/1/diao.wma”);
as = new AudioStream(u.openStream());
AudioPlayer.player.start(as);
如果我們需要重復播放1首音樂,需要這樣寫:
AudioData data = as.getData();
ContinuousAudioDataStream gg = new ContinuousAudioDataStream(data);
AudioPlayer.player.start(gg);
最后別忘:as.close();固然還有 try catch .
最后我需要說明。 java 我這次提到的兩中聲音播放的方法,對所有音頻文件的支持其實不是很理想,有很多格式,比如 mp3是沒法播放滴,文件1般情況下都需要轉換成 wav,在這以后由于轉碼的問題,乃至不1定所有的 wav 都能播放,這樣會使文件過大,而且目前在jdk1.8 我還沒找到很好的暫停,繼續播放音樂的方法。所以我希望本文能夠多給與 java里通過反射定位1個資源文件滴1些參考。