次のコードを使用して、ゲームでサウンドを再生します。
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.IOException;
public class AudioController {
public static void playback(String fileName)
throws LineUnavailableException, UnsupportedAudioFileException, IOException {
AudioInputStream ais = AudioSystem.getAudioInputStream(AudioController.class.getClassLoader().getResourceAsStream("sounds/"+fileName));
AudioFormat format = ais.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
Clip clip = (Clip) AudioSystem.getLine(info);
clip.open(ais);
clip.start();
}
}
問題は、サウンドを初めて再生する場合、何らかの初期化作業が行われるため、アプリケーションが短時間ハングすることです。その後に再生されるすべてのサウンドは、この動作を示していません。それを防ぐ方法は?