在背景中开始和停止音乐

2023-12-10

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

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

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


它与声音无关,它与能够访问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,因此您可能还需要进行一些其他调整,但这是您所追求的基本概念...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在背景中开始和停止音乐 的相关文章

随机推荐