在后台开始和停止音乐

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

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