我正在制作游戏,里面有背景音乐。我想添加一个静音按钮,启动和停止音乐,但我不知道如何。创建音乐的方法是:
public static void backgroundMusic() {
try {
AudioInputStream audio = AudioSystem.getAudioInputStream(new File("SoundFile.wav"));
Clip clip = AudioSystem.getClip();
clip.open(audio);
clip.start();
}
catch(UnsupportedAudioFileException uae) {
System.out.println(uae);
}
catch(IOException ioe) {
System.out.println(ioe);
}
catch(LineUnavailableException lua) {
System.out.println(lua);
}
}
我想要做的是在按钮的动作处理程序中,我想添加一个静音按钮,如果用户喜欢,它会启动和停止音频。所以它就像:if(e.getSource()== muteButton){//启动和停止音乐}
我该怎么做呢?谢谢你的帮助!
答案 0 :(得分:0)
它与声音无关,它与能够访问Clip
引用有关。因为您已创建对Clip
的本地引用,所以没有其他任何内容可以访问该引用以更改状态...
您需要更改本地引用,以便它是类级别引用,允许其他方法与其进行交互...
例如......
protected static Clip clip;
public static void backgroundMusic() {
try {
if (clip == null) {
AudioInputStream audio = AudioSystem.getAudioInputStream(new File("SoundFile.wav"));
clip = AudioSystem.getClip();
clip.open(audio);
}
if (!clip.isRunning()) {
clip.start();
}
}
catch(UnsupportedAudioFileException uae) {
System.out.println(uae);
}
catch(IOException ioe) {
System.out.println(ioe);
}
catch(LineUnavailableException lua) {
System.out.println(lua);
}
}
public static void stopBackgroundMusic() {
if (clip != null) {
clip.stop();
}
}
ps-我从未真正处理过音频API,因此可能需要进行一些其他的调整,但这是您追求的基本概念......