我已经有了一种在我的游戏中播放声音效果的工作方法,但声音都是以默认音量播放的。如果声音效果的起源和播放器之间的距离增加,我希望声音更安静。
目前我正在使用:
public static void play(String sound) {
Clip clip = soundList.get(sound);
clip.setFramePosition(0);
//I want to set the clip's volume here
clip.start();
}
有像clip.getLevel()这样的东西,但是没有setter。 如何在开始之前设置剪辑的音量?
提前致谢!
答案 0 :(得分:1)
在Java 7(也许是Java 6)中,有一组给出control to the clip的类。这些是:
您要查找的控件对象是FloatControl
。如上面的列表所示,这可以控制剪辑的音量。使用以下代码实现此目的:
FloatControl volume = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
volume.setValue(gainAmount);
-OR -
((FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN)).setValue(gainAmount)
gainAmount
是你想要提高(或降低)剪辑的分贝数。
答案 1 :(得分:0)
剪辑API不支持此功能,AFAIK。我认为您必须读取原始数据,乘以常量,然后使用原始数据创建新剪辑。常数表示音量变化量,因此如果您想要它的一半大声,则乘以.5。
如果你想要做出更大声的话,你必须注意“过度”。没有简单的方法可以解决这个问题。