Java-在背景音乐上播放声音
这是我第一次发帖,希望我发帖正确 我正在为我的项目播放一首背景曲,当按下背景曲上方的一个按钮时,我正在尝试播放音效。但是,声音不会播放,bgm只会继续。请看下面我的音频课程(忽略不好的评论),并提前感谢您的帮助Java-在背景音乐上播放声音,java,audio,javasound,Java,Audio,Javasound,这是我第一次发帖,希望我发帖正确 我正在为我的项目播放一首背景曲,当按下背景曲上方的一个按钮时,我正在尝试播放音效。但是,声音不会播放,bgm只会继续。请看下面我的音频课程(忽略不好的评论),并提前感谢您的帮助 package pro; import java.io.IOException; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sou
package pro;
import java.io.IOException;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
public class Audio
{
private boolean loop = false;
private AudioInputStream ais = null;
private static Clip clip = null;
//declaration of variables
public Audio (String fileName, boolean loop)
//Constructor for the class which fileName and accepts whether the clip needs to loop or not
{
this.loop = loop;
//sets the variable within the class as constructor
try {
clip = AudioSystem.getClip();
ais = AudioSystem.getAudioInputStream(Audio.class.getResource(fileName));
clip.open(ais);
} catch (IOException | UnsupportedAudioFileException | LineUnavailableException e) {
e.printStackTrace();
}
//tries to load file into java's built in audio player, else prints the error to console
}
public void musicStart ()
//starts music
{
if (loop)
{
clip.loop(Clip.LOOP_CONTINUOUSLY);
//starts music on loop if loop is requested
}
else
{
clip.start();
//starts music as not on loop
}
}
public void musicStop ()
//stops the music
{
clip.stop();
}
}
编辑:多亏了MadProgrammer,我找到了解决问题的方法,只需从剪辑中删除静态。摆脱
剪辑的静态声明。Audio
的每个实例都应该是自包含的,并指向它自己的Clip
基本上,static
将使Clip
始终指向加载的最后一个声音文件,这并不是您真正想要的,因为当您调用stopMusic
时,你不知道你真的在停止哪个剪辑,或者你是否真的在停止任何东西我建议在clip
变量上使用static
,即使使用可疑的static
clip
引用,也无助于测试你的Audio
类,它仍然可以播放两种声音…非常感谢,显然这有助于解决问题。只是出于好奇,你知道为什么会这样吗?(我希望我能投你一票,但我认为我的排名太低)再次感谢你的帮助@qwertyderp音乐/声音很有趣…尤其是在凌晨2点!