好吧,我正在使用java编写一个游戏项目,我想实现这样的东西:当一个对象开始移动时,它会产生一些声音效果,当另一个对象在第一个对象停止之前开始移动时,它也会发出一些声音效果。在第二个对象开始移动之后并且在第一个对象停止移动之前,如何合并两个对象的声音而不是单独播放它们?
答案 0 :(得分:0)
大部分内容都是使用java.sound.sampled
库实现的。专注于Clip
的功能。 This site使用样本和MIDI文件提供了一些非常好的样板。它甚至有一个游戏的例子。
无论如何,基于StackOverflow的javasound page,下面是一次播放两个Clip
s的粗略示例:
public static void main(String... args) throws Exception {
URL url1 = new URL("http://www.websitewithsomewav/noise1.wav");
Clip clip1 = AudioSystem.getClip();
AudioInputStream stream1 = AudioSystem.getAudioInputStream(url1);
clip1.open(stream1);
URL url2 = new URL("http://www.websitewithsomewav/noise2.wav");
Clip clip2 = AudioSystem.getClip();
AudioInputStream stream2 = AudioSystem.getAudioInputStream(url2);
clip2.open(ais2);
clip1.loop(Clip.LOOP_CONTINUOUSLY);
clip2.loop(Clip.LOOP_CONTINUOUSLY);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// A GUI element to prevent the Clip's daemon Thread
// from terminating at the end of the main()
JOptionPane.showMessageDialog(null, "Close to exit!");
}
});
}
如果你绝对必须使用单个输入流,你可以尝试MixingAudioInputStream