2017-09-15 166 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();