在背景中开始和停止音乐

时间:2014-01-15 19:56:30

标签: java audio

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

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

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

1 个答案:

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