2

Java で 2D ゲームに取り組んでいますが、実行可能な Jar ファイルからゲームを実行すると、数ミリ秒間再生した後にゲームのサウンドが途切れるという問題があります。Eclipse からゲームを実行すると、サウンドが正しく再生されます。

次のようにサウンド ファイル (.wav) を読み込みます。

AudioInputStream ais = AudioSystem.getAudioInputStream(this.getClass().getResource("sounds/sound.wav"));
AudioFormat af = ais.getFormat();
int size = (int) (af.getFrameSize() * ais.getFrameLength());
byte[] audio = new byte[size];
DataLine.Info info = new DataLine.Info(Clip.class, af, size);
ais.read(audio, 0, size);
sound= (Clip) AudioSystem.getLine(info);
sound.open(af, audio, 0, size);

ゲームの後半で、次のようにサウンドを再生します。

public void playClip(final Clip clip, final int loop){
    Runnable soundPlayer = new Runnable() {
        Clip sound = clip;
        @Override
        public void run() {
            try {
                sound.setMicrosecondPosition(0);
                sound.loop(loop);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    };
    new Thread(soundPlayer).start();
}

プログラムがそのように動作する理由と、その問題を解決する方法を知っていますか? よろしくお願いします。

4

0 に答える 0