-1

しばらくの間、アプレットでサウンドを処理しようとしていますが、さまざまな方法をすべて試す代わりに、Java でサウンドを再生する最良の方法は何ですか? いくつかの要件があります。

  • ループできる必要がある
  • アーカイブ JAR から WAV をロードできるようにする必要があります (getClass().getResource を使用すると思います)。
  • 同時に複数のサウンドを再生できる必要があり、既に再生中のサウンドをクリップしない

私の質問を見てくれてありがとう。皆さんが答えてくれることを願っています!

素晴らしい助けのおかげで、私はほとんどこれで動作しています:

public class MyGame() {
   Clip bullet;


    public void init(){
        try {

        bullet = AudioSystem.getClip();
        URL url2 = this.getClass().getResource("bulletSound.wav");
        AudioInputStream ais2 = AudioSystem.getAudioInputStream( url2 );

        bullet.open(ais2);
        } catch (LineUnavailableException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } catch (UnsupportedAudioFileException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
    }
    randomMethodToPlayBullet(){
        bullet.setFramePosition(0);
        bullet.start();
    }
}

問題は、弾丸の音が再生されることですが、randomMethodToPlayBullet が連続して 2 回呼び出されると、最初の弾丸の音が鳴る前に、2 番目の音が再生されません。

4

3 に答える 3

2

jar ファイルからリソースをロードする最良の方法は、同じフォルダーにクラスを配置し、.class.getResource(...)または.class.getResourceaAsStream(...)メソッドを使用してリソースを取得することです。

URL url = ClazzInTheFolderOfMyMidiFile.class.getResource(nameOfMidiFile);

また

InputStream resourceAsStream = ClazzInTheFolderOfMyMidiFile.class.getResourceAsStream(nameOfMidiFile);
于 2012-08-24T07:15:28.687 に答える
1

答え:

于 2012-08-24T07:08:51.453 に答える
1

同じクリップを同時に 2 回再生することはできません。サウンドを同時に 2 回再生するには、Clip の別のインスタンスを作成する必要があります。

再生できるクリップの数には制限があるため、サウンドを多用するゲームのサポートにはクリップ API が適していない可能性があることに注意してください。

于 2012-08-24T10:30:13.997 に答える