[英]Sound Effects In 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 個線程。
現在顯然這是不需要的行為,我想知道如何解決這個問題,並更有效地實現音效。 有沒有你們知道的方法或方式,它們不會創建如此大量的線程,我可以同時播放大量音效? 一些幫助將不勝感激!
如果 JavaFX 是一個選項,那么切換到它可能是一個好主意,因為它提供了一系列良好的音頻播放功能。 來自官方文檔:
AudioClip plonkSound = new AudioClip("http://somehost/path/plonk.aiff");
plonkSound.play();
您還可以使用.wav
文件,這是一種流行的音效選擇。 有關更多信息,請訪問javadoc 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.