2017-09-15 9 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

'ローカル変数のクリップ 'で' tryブロック'の中にインスタンス変数 'clip'を隠しています。 'Clip clip = AudioSyste.getClip()'を 'clip = AudioSyste.getClip()'に置き換えてください。 – Jimmy

答えて

2

clipの範囲が問題です。 playSoundで定義されたclipオブジェクトはstopSoundには不明です。

あなたのオブジェクトがclip属性が含まれている場合

playSoundへの最初の行を変更しよう:

clip = AudioSystem.getClip(); 
関連する問題