2012-03-12 12 views
0

[OK]を、あなたは異なる領域にまたは中断がAIと同じように、存在する場合にあるときに、私はゲームや音楽の変更を行っています。音楽(スタート/ストップ)

私は自分のプログラムで音楽ショーをする方法を学びましたが、今はそれをやめさせようとしていますが、私は音楽が演奏されているコードのスニペットですアクションが発生したときに新しい音楽でそれを覆す。

public static void songs(String word) { 
     String temp = word; 
     if (temp.equals("start")) { 

      try { 

       try { 
        blah = new FileInputStream("C:/Users/Austin/Desktop/Storage/programimages/game/battle.wav"); 

       } catch (Throwable e) { 
        e.printStackTrace(); 
       } 
       AudioStream as = new AudioStream(blah); 

       AudioPlayer.player.start(as); 
       System.out.println("going"); 

      } catch (IOException e) { 
       System.err.println(e); 
      } 
     } 

     if (temp.equals("stop")) { 

      try { 

       try { 
        blah = new FileInputStream("C:/Users/Austin/Desktop/Storage/programimages/game/silence.wav"); 

       } catch (Throwable e) { 
        e.printStackTrace(); 
       } 
       AudioStream as = new AudioStream(blah); 

       AudioPlayer.player.stop(as); 
       System.out.println("stopping"); 

      } catch (IOException e) { 
       System.err.println(e); 
      } 
     } 
    } 

これは、私はそれが音楽再生を持っていますが、あなたたちは他の提案を持っているなら、私に知らせてください見つけることができた唯一の方法です。

は再び、私は音に影響し、音楽に行くを持ちたい、と今起こっているすべて1つの曲が再生されている、そしてそれは、その長さの最後の最後に達するまで、それはどのような状況の下で停止しません。私は、新しいものが来なければならないときはいつでも曲を止めることができるようにしたい。また、サウンドエフェクトがポップアップできるようにしたい。

ありがとうございます! (私はこれに固執し、答えが必要なので、私はおそらく1つか2つ以上のJavaサイトを再投稿しますので、できるだけ早く回答を得ることができます!!!!)

EDITED CODE:現在、あなたのストップ支店で新しいAudioStreamを作成し、これを使用してstopメソッドを呼び出している

public static void songs(String word) throws IOException { 
    String temp = word; 


    if (temp.equals("go")) { 
     try { 
      blah = new FileInputStream("C:/Users/Austin/Desktop/Storage/programimages/game/battle.wav"); 
     } catch (Throwable e) { 
      e.printStackTrace(); 
     } 

     AudioStream as = new AudioStream(blah); 
     AudioPlayer.player.start(as); 
     System.out.println("going"); 
    } 

    if (temp.equals("stop")) { 

     //don't try and do things with a null object! 
     if (as != null) { 
      AudioPlayer.player.stop(as); 
      System.out.println("stopping1"); 
     } 
     System.out.println("stopping2"); 
     AudioPlayer.player.stop(as); 
    } 
} 
+0

「AudioStream」とは何ですか? 'AudioStream'クラスのJavaDocsはどこにありますか? –

答えて

1

)任意のより多くの提案を高く評価、現在のストリームを停止しません。これは、現在再生されているものと異なるオブジェクトです。 AudioStreamをクラス変数にして、その代わりにstopを呼び出してみてください。

EDIT:あなたのコードを含むクラスの最上部にある...あなたの開始ブランチで

class YourClass { 
    //the class member variable 
    private AudioStream as; 
    //[etc...] 

:あなたのストップブランチで

// 'as' has already been defined above 
as = new AudioStream(blah); 
AudioPlayer.player.start(as); 
System.out.println("going"); 

try 
{ 
    //don't try and do things with a null object! 
    if (as != null) 
    { 
     AudioPlayer.player.stop(as); 
    } 
    System.out.println("stopping"); 
} 
catch (IOException e) 
{ 
    System.err.println(e); 
} 

ますあなたの方法上のstatic識別子で問題が発生する場合があります - あなたは、インスタンス化クラスYの中からこれを呼び出している場合これは必要ありません。

+0

さて、私はこれをしようとしていますが、多くのエラーが発生しています。あなたは私にaudiostreamの変数を実装しようとする場所とどこで停止するのかについて基本的なレイアウトを教えてください。そして、私はそれを "止め"ないしは単に "サイレント"トラックを演奏する方が良いです。 ありがとう! – Austin

+0

オースティン:うまくいけば私の編集が助けになるでしょう。 wds:呼び出されている停止はAudioPlayer.playerにあります。彼が存在しないメソッドを呼び出そうとしていた場合、コードはコンパイルされませんでした。ちょうど我々が持っている情報に役立つことを試みる。 – raveturned

+0

これは私が今持っているものです...まだbtwは動作しません。 ここで、停止ボタンを押すか、何か変更すると、nullでない「停止2」の意味が表示されます。 オルガン曲はまだ演奏されていません。私は静かな音楽ファイルを再生すると停止を交換しようとしたが、それはすべて他のサウンドの上で実行されます。私は何とかストリームをカットする必要があります。 私はまた、ちょうどこの... 警告気づい@raveturned新しいコード – Austin

0

私も私のEclipse IDE上でこれらのsun.audioのオブジェクトにアクセスすることはできません - 私は、彼らがrt.jar内知っているが、それらは独自のと、そのようなことについてのヘッダ情報があります。

Javaのサウンドライブラリ(javax.sound.sampledのは)あなたが何をしたいのか扱うことはできますか? ClipとSourceDataLineの両方で再生を停止することができます。これはネイティブJavaを使いたい場合、より一般的なサウンドの再生方法です。

再生にはここにある:

http://docs.oracle.com/javase/tutorial/sound/playing.html

しかし、ドキュメンテーション、全体的に、例と全く豊かではありません。たとえば、このサイトでコード

http://www.jsresources.org/

、あなたはネイティブのJavaアプローチの問題に実行する場合に役立つ可能性がここの人々がたくさんあります。