我无法让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;只发生一次,否则会有音频重叠并占用加载音乐的所有内存。 任何帮助表示赞赏。谢谢。
答案 0 :(得分:0)
仔细阅读:
"停止该行。停止的行应该停止I / O活动。但是,如果该行已打开并正在运行,则应保留恢复活动所需的资源。停止的行应该在其缓冲区中保留任何音频数据而不是丢弃它,以便在恢复时I / O可以在它停止的地方继续,如果可能的话。 (当然,这并不能保证当前缓冲区之外永远不会出现不连续性;如果停止条件持续时间过长,则可能会丢弃输入或输出样本。)如果需要,可以通过以下方式丢弃保留的数据:调用flush方法。当音频捕获或播放停止时,会生成STOP事件。"