簡體   English   中英

Java中的聲音效果?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM