Java 中的音效?
Sound Effects In Java?
我目前正忙于创建一个视频游戏作为一个小的副项目,以保持我的编程技能在大学时保持领先。视频游戏的一个方面是音效,我正在思考如何在 Java 中做到最好。
目前我正在使用 Clip class 来制作音效,下面是我正在使用的(非常基本和常见的)代码的预览:
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 class 的问题在于它会为自己创建一个新的线程来播放音频。因此,需要同时播放大量剪辑可能会激增创建的线程数量,甚至可能使游戏冻结几秒钟。通过一些分析,当同时播放大量音效时,我的线程数达到了 60 个。
现在显然这是不受欢迎的行为,我想知道如何解决这个问题,并更有效地实现音效。有没有你们知道的方法或方式,不会创建如此多的线程,我可以同时播放大量音效?如果能提供帮助,我们将不胜感激!
如果 JavaFX 是一个选项,那么切换到它可能是个好主意,因为它提供了范围广泛的音频播放功能。来自官方文档:
AudioClip plonkSound = new AudioClip("http://somehost/path/plonk.aiff");
plonkSound.play();
您还可以使用 .wav
文件,这是音效的常用选择。如需更多信息,请访问 javadoc.
我目前正忙于创建一个视频游戏作为一个小的副项目,以保持我的编程技能在大学时保持领先。视频游戏的一个方面是音效,我正在思考如何在 Java 中做到最好。
目前我正在使用 Clip class 来制作音效,下面是我正在使用的(非常基本和常见的)代码的预览:
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 class 的问题在于它会为自己创建一个新的线程来播放音频。因此,需要同时播放大量剪辑可能会激增创建的线程数量,甚至可能使游戏冻结几秒钟。通过一些分析,当同时播放大量音效时,我的线程数达到了 60 个。
现在显然这是不受欢迎的行为,我想知道如何解决这个问题,并更有效地实现音效。有没有你们知道的方法或方式,不会创建如此多的线程,我可以同时播放大量音效?如果能提供帮助,我们将不胜感激!
如果 JavaFX 是一个选项,那么切换到它可能是个好主意,因为它提供了范围广泛的音频播放功能。来自官方文档:
AudioClip plonkSound = new AudioClip("http://somehost/path/plonk.aiff");
plonkSound.play();
您还可以使用 .wav
文件,这是音效的常用选择。如需更多信息,请访问 javadoc.