2016-09-24 50 views
-1

我目前正忙於創建一個視頻遊戲作爲一個小型的項目,以保持我的編程技能點在大學。電子遊戲的一個方面就是聲音效果,而且我非常想知道如何在Java中做到最好。Java中的音效?

目前我使用的Clip類的聲音效果,這裏我使用的(很基本的,共同)代碼的預覽:

 try { 
      AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(path)); 
      clip = AudioSystem.getClip(); 
      clip.open(audioInputStream); 
      if(loop) 
      { 
       clip.loop(Integer.MAX_VALUE); 

       volumeControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN); 
       setVolume(volume); 
       launched = true; 
      } 
      else 
      { 
       clip.start(); 

       volumeControl = (FloatControl)clip.getControl(FloatControl.Type.MASTER_GAIN); 
       setVolume(volume); 
       running = true; 
       CoreTime.sfx.add(this); 

      } 
     } catch(Exception e){System.out.println(e + "=-=-=-=-=-=-=-=-=-=run SFXPlayer");} 

Clip類的問題卻是,它創造一個用於播放音頻的新線程。由於需要同時播放大量剪輯,因此可能會增加創建的線程數量,甚至可能會使遊戲凍結一段時間。通過一些分析,當同時播放大量聲音效果時,我已經獲得了多達60個線程的線程數。

現在顯然這是不受歡迎的行爲,我想知道如何解決這個問題,並更有效地實現聲音效果。你們有沒有方法或方法可以讓你知道,不會創造出這麼瘋狂的大量線程,我可以一次播放很多聲音效果?一些幫助真的會很感激!

+0

「_已啓動和正在運行的布爾值之間有區別,我不打算在這裏解釋。」如果你不知道你在問什麼**。 – progyammer

+0

@progy_rock布爾人與任務無關,所以我在你的評論中看不到這一點? – ImJustACowLol

回答

1

如果JavaFX是一個選項,切換到它可能是一個好主意,因爲它提供了一系列音頻播放功能。從官方文檔:

AudioClip plonkSound = new AudioClip("http://somehost/path/plonk.aiff"); 
plonkSound.play(); 

您還可以使用.wav文件,這是聲音效果的熱門選擇。欲瞭解更多信息,請訪問javadoc