-1

ここに、ユーザーの入力をリッスンするコードがあります。

System.out.println(message);{
            if(message.equals("play")){
                try {
                    AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("c:/DancingMachupapet/Test.wav"));
                        Clip clip = AudioSystem.getClip();
                        // getAudioInputStream() also accepts a File or InputStream

                        clip.open(inputStream);
                        clip.start();
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                JOptionPane.showMessageDialog(null, "Close to exit!");
                            }
                        });


                }catch (IOException e) {
                }
            }
            if(message.equals("hoy")){
                try {
                    AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("c:/DancingMachupapet/ThinkOfManu.wav"));
                        Clip clip = AudioSystem.getClip();
                        // getAudioInputStream() also accepts a File or InputStream

                        clip.open(inputStream);
                        clip.start();
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                JOptionPane.showMessageDialog(null, "Close to exit!");
                            }
                        });


                }catch (IOException e) {
                }
            }
            }

このコードは、'hoy' と 'play' というメッセージが表示されると機能し、それぞれ 'ThinkOfManu.wav' と 'Test.wav' を再生します。それは機能しますが、私の問題は、「hoy」と「play」を同時に入力すると、2 つの wav ファイルも同時に再生されることです。

私が実現したいのは、ThinkOfManu.wav の再生中に Test.wav を呼び出したときに、ThinkOfManu が停止して Test.wav を再生することです。同時にではありません。

ここで私を助けてください。

4

1 に答える 1

1

メソッド Clip.stop が存在すると仮定していますか?

新しい曲を実行するたびに、新しいクリップ オブジェクトを作成しています。代わりに、try-catch ブロックの外側でクリップ オブジェクトを初期化し、clip.play() をトリガーする直前に、clip.stop を実行します。

それはあなたのために働くはずです。

コード例:

Clip clip = AudioSystem.getClip();

if(message.equals("play"))
{
  try {
       AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("c:/DancingMachupapet/Test.wav"));
    clip.stop();
    clip.open(inputStream);
    clip.start();
    SwingUtilities.invokeLater(new Runnable() {
       public void run() {
       JOptionPane.showMessageDialog(null, "Close to exit!");
    }});
  }catch (IOException e) {
  }
  }
            if(message.equals("hoy")){
                try {
                    AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("c:/DancingMachupapet/ThinkOfManu.wav"));
                        clip.open(inputStream);
                        clip.start();
                        SwingUtilities.invokeLater(new Runnable() {
                            public void run() {
                                JOptionPane.showMessageDialog(null, "Close to exit!");
                            }
                        });


                }catch (IOException e) {
                }
            }
            }
于 2013-09-08T16:35:23.467 に答える