clip.stop();不停止播放音频

时间:2016-08-20 17:58:31

标签: java audio

我无法让clip.stop()停止当前的声音,除非它紧随其后

 clip.loop(Clip.LOOP_CONTINUOUSLY);

这是我目前正在使用的一些代码,其后是不产生声音的代码。

try {
    Clip clip = AudioSystem.getClip();
    if(clock == 2){
        clip.open(AudioSystem.getAudioInputStream(new File("res//battle.wav")));
        clip.loop(Clip.LOOP_CONTINUOUSLY);
        System.out.println(clock);
    }
    if(clock >=300){
        clip.stop();
        xaxis+=100;
        yaxis+=100;
        System.out.println("we tried to stop");
    }

try {
    Clip clip = AudioSystem.getClip();
    if(clock == 2){
    clip.open(AudioSystem.getAudioInputStream(new File("res//battle.wav")));
    clip.loop(Clip.LOOP_CONTINUOUSLY);
    clip.stop();
    System.out.println(clock);
}

目前时钟= 2;只发生一次,否则会有音频重叠并占用加载音乐的所有内存。 任何帮助表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

仔细阅读:

"停止该行。停止的行应该停止I / O活动。但是,如果该行已打开并正在运行,则应保留恢复活动所需的资源。停止的行应该在其缓冲区中保留任何音频数据而不是丢弃它,以便在恢复时I / O可以在它停止的地方继续,如果可能的话。 (当然,这并不能保证当前缓冲区之外永远不会出现不连续性;如果停止条件持续时间过长,则可能会丢弃输入或输出样本。)如果需要,可以通过以下方式丢弃保留的数据:调用flush方法。当音频捕获或播放停止时,会生成STOP事件。"