【问题标题】:Buzzing on Exit出口时嗡嗡作响
【发布时间】:2013-07-22 05:21:28
【问题描述】:

我正在尝试构建一个使用音效的游戏。我之前没有处理过Java API,所以我可能会犯一些错误。尽管如此,效果还是很好的——我唯一的问题是,每当我的程序退出时,我都会听到奇怪的嗡嗡声。

知道如何摆脱它吗?现在我正在尝试使用 killLoop() 方法在退出发生之前杀死任何播放声音,但这并没有让我到任何地方。

感谢您的帮助!

public class Sound
{
private AudioInputStream audio;
private Clip clip;

public Sound(String location)
{
    try {
            audio = AudioSystem.getAudioInputStream(new File(location));
            clip = AudioSystem.getClip();
            clip.open(audio);
        }

        catch(UnsupportedAudioFileException uae) {
            System.out.println(uae);
        }
        catch(IOException ioe) {
            System.out.println(ioe);
        }
        catch(LineUnavailableException lua) {
            System.out.println(lua);
        }
}

public void play()
{
    clip.setFramePosition(0);
    clip.start();
}

public void loop()
{
    clip.loop(clip.LOOP_CONTINUOUSLY);
}

public void killLoop()
{
    clip.stop();
    clip.close();
}
}

public class Athenaeum
{
public static void main(String[] args) throws IOException
{
    final Game game = new Game();
    GUI athenaeumGui = new GUI(game);

    athenaeumGui.setSize(GUI.FRAME_WIDTH, GUI.FRAME_HEIGHT);
    athenaeumGui.setTitle("Athenaeum");
    athenaeumGui.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    athenaeumGui.setLocationRelativeTo(null);
    athenaeumGui.setMinimumSize(new Dimension(GUI.FRAME_WIDTH, GUI.FRAME_HEIGHT));
    athenaeumGui.buildGui();
    athenaeumGui.setVisible(true);

    athenaeumGui.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent we)
        {
            game.killAudio(); // method calls Sound.killLoop()
            System.exit(0);
        }
    });
}

}

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java swing audio javasound clip


【解决方案1】:

Java api 中,他们说 AudioInputStream 类有一个“.close()”方法,可以“关闭此音频输入流并释放与该流相关的任何系统资源”。也许这是你可以尝试的。

【讨论】:

  • vinc_ZEthing,Clip中的.close()函数继承自Line,和AudioInputStream使用的一样。不过,有一个 可能 有帮助的 flush() 方法。但我的第一个猜测是仅 System.exit(0) 就足以关闭一切。我期待着学习正确的答案。
猜你喜欢
  • 2016-05-28
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
  • 2011-02-27
  • 2014-08-04
  • 1970-01-01
相关资源
最近更新 更多