2017-09-15 168 views
1

我试图制作java游戏,现在我正在实施音乐到游戏。问题是如果音乐正在播放,并且声音开始播放,那么我想停止音乐。另一个声音开始播放时的Java停止声音

目前代码

Clip clip; 

public void playSound(File sound) { 
    try { 
     Clip clip = AudioSystem.getClip(); 
     clip.open(AudioSystem.getAudioInputStream(sound)); 
     clip.start(); 
    } catch(Exception e) { 
     System.out.println("Error with playing sound."); 
     e.printStackTrace(); 
    } 
} 

public void stopSound() { 
    if(clip == null) return; 
    clip.stop(); 
} 

但如果我叫stopSound方法听起来那么永远得不到的停止。

任何帮助表示赞赏!

+0

是否 “夹” 在'stopSound()'上下文存在?对我来说,似乎只是在'playSound'函数内实例化“剪辑”对象。 – CarlosCarucce

+0

我忘了更新(我完全复制了所有需要的代码) – MemesTV

+0

你正在用'local variable clip'在'try block'中隐藏实例变量'clip'。用'clip = AudioSyste.getClip()'替换'Clip clip = AudioSyste.getClip()' – Jimmy

回答

2

clip的范围是问题所在。 中定义的clip对象未知于stopSound

如果你的对象包含clip属性,尝试改变的playSound第一行:

clip = AudioSystem.getClip();