Java 在后台启动和停止音乐

Java 在后台启动和停止音乐,java,audio,Java,Audio,我正在做一个游戏,里面有背景音乐。我想添加一个静音按钮,启动和停止音乐,但我不知道如何。创建音乐的方法是: public static void backgroundMusic() { try { AudioInputStream audio = AudioSystem.getAudioInputStream(new File("SoundFile.wav")); Clip clip = AudioSystem.getClip(); clip.open

我正在做一个游戏,里面有背景音乐。我想添加一个静音按钮,启动和停止音乐,但我不知道如何。创建音乐的方法是:

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){//启动和停止音乐}


我该怎么做呢?谢谢你的帮助

它与声音无关,它与能够访问
剪辑
参考有关。因为您已经创建了对
剪辑的本地引用
,其他任何内容都无法访问该引用以更改状态

您需要更改本地引用,使其成为类级引用,从而允许其他方法与之交互

例如

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,因此可能需要进行一些其他调整,但这是您所追求的基本概念…

您将需要引用当前活动的
剪辑
,以便您可以与它进行交互methods@MadProgrammer你能解释一下怎么做吗?我以前从未真正处理过声音。。我建议您阅读它,并注意启动/停止功能。