我有一個主遊戲發生在遊戲邏輯。我只是說聲音播放按照文件,我發現:多線程只能用Java播放背景音樂嗎?
//////////////////////SOUND/////////////////////////
SourceDataLine soundLine = null;
int BUFFER_SIZE = 64*1024; // 64 KB
// Set up an audio input stream piped from the sound file.
try {
File soundFile = new File("tim ph3 samplepart1.wav");
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile);
AudioFormat audioFormat = audioInputStream.getFormat();
DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
soundLine = (SourceDataLine) AudioSystem.getLine(info);
soundLine.open(audioFormat);
soundLine.start();
int nBytesRead = 0;
byte[] sampledData = new byte[BUFFER_SIZE];
while (nBytesRead != -1) {
nBytesRead = audioInputStream.read(sampledData, 0, sampledData.length);
if (nBytesRead >= 0) {
// Writes audio data to the mixer via this source data line.
soundLine.write(sampledData, 0, nBytesRead);
}
}
} catch (UnsupportedAudioFileException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (LineUnavailableException ex) {
ex.printStackTrace();
} finally {
soundLine.drain();
soundLine.close();
}
/////////////////////////////////////////////////////
它發揮我指定了文件的Eclipse中我的項目文件夾中的文件。
問題?它會阻止所有遊戲邏輯出現在主體之後。
這是有道理的 - 該程序是連續的,直到整首歌完成...我認爲遊戲無法繼續下去。
這顯然不會起作用,看起來我將不得不去看可怕的多線程......但在此之前......我想......是否有Java庫或其他在這種情況下避免多線程的巧妙解決方案?
多線程並不是所有這些令人害怕的東西。我記得在學習之前也有同樣的感覺,但它非常合乎邏輯。調試線程間某些共享資源中存在的錯誤,現在* *我害怕:) – 2012-07-11 19:58:07
這不是播放音樂的唯一方式,但它是唯一的方法,如果您想同時做其他任何事情!換句話說,你在這裏沒有選擇。學習如何多線程並獲得一些樂趣。 – 2012-07-11 19:58:27
D'awww好吧我想我會學習一些東西haha – PinkElephantsOnParade 2012-07-11 19:59:42