我在 how to implement audio sounds in Java games 上观看了 Mattew 的精彩教程.
问题是即使我在运行游戏时降低了wav文件的音量,在Java中wav声音文件的音量仍然很高,我的意思是你甚至不能玩游戏,因为背景音乐是太吵了。
为什么 wav 文件的体积没有在 Java 中维护?
最佳答案
使用基于 Java Sound 的 Clip
可能会更好。比基于小程序的 AudioClip
. Clip
接口(interface)支持控件,其中一个应该是MASTER_GAIN
.
例如。
import java.awt.*;
import java.net.URL;
import javax.swing.*;
import javax.swing.event.*;
import javax.sound.sampled.*;
class ClipVolume {
public static void main(String[] args) throws Exception {
URL url = new URL(
"http://pscode.org/media/leftright.wav");
final Clip clip = AudioSystem.getClip();
// getAudioInputStream() also accepts a File or InputStream
AudioInputStream ais = AudioSystem.getAudioInputStream(url);
clip.open(ais);
clip.loop(Clip.LOOP_CONTINUOUSLY);
Runnable r = new Runnable() {
@Override
public void run() {
final FloatControl control = (FloatControl)
clip.getControl(FloatControl.Type.MASTER_GAIN);
final JSlider volume = new JSlider(
JSlider.HORIZONTAL,
(int) control.getMinimum(),
(int) control.getMaximum(),
(int) control.getValue());
volume.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ce) {
control.setValue(volume.getValue());
}
});
JOptionPane.showMessageDialog(null, volume);
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency
SwingUtilities.invokeLater(r);
}
}
关于java - AudioClip 音量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20873057/