我有一个功能,每次用户点击时都会调用该功能,如果屏幕发生变化,它将启动音乐。它现在唯一的问题是它不会停止。我已经发现这是因为clip = AudioSystem.getClip();不会返回当前正在播放的剪辑,每次都会返回一个随机位置。如何确保剪辑获取当前播放剪辑的值以便我可以阻止它?
" StartBGMusic"功能
public void startBGMusic() throws LineUnavailableException, IOException
{
clip = AudioSystem.getClip();
System.out.println(clip);
try
{
if(SCREEN_CHECK != Screen)
{
clip.stop();
clip.close();
if(Screen != 14 && Screen != 19 && Screen != 16 && Screen != 15 && Screen != 17)
{
clip.open(AudioSystem.getAudioInputStream(getClass().getResource("UpbeatFunk.wav")));
clip.loop(99999);
}
else
{
clip.open(AudioSystem.getAudioInputStream(getClass().getResource("Background Music.mid")));
clip.loop(99999);
}
}
SCREEN_CHECK = Screen;
}catch (Exception e)
{
e.printStackTrace(System.out);
}
}
答案 0 :(得分:1)
According to oracle documentation, getClip()不会返回当前播放的声音,而是一个可用于播放音频文件的剪辑对象。
您需要传递对用于启动音频文件的剪辑的引用。这可以通过将其作为参数返回/传递或使用全局变量/ getter方法
来完成