我有一个游戏的音效。在游戏框架打开时,第一个声音落后。声音播放后,不会再出现滞后现象。 这是我的剪辑播放器:
public enum SoundEffect
{
WALL("ping_pong_8bit_plop"),
PADDLE("ping_pong_8bit_beeep"),
POINT("ping_pong_8bit_peeeeeep");
public static enum Volume
{
MUTE, UNMUTE
}
public static Volume volume = Volume.MUTE;
private Clip clip;
SoundEffect (String file)
{
try
{
AudioInputStream inputStream = AudioSystem.getAudioInputStream(this.getClass().getResource(file+".wav"));
AudioFormat format = inputStream.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
clip = (Clip)AudioSystem.getLine(info);
clip.open(inputStream);
}
catch (UnsupportedAudioFileException uae)
{
uae.printStackTrace();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
catch (LineUnavailableException lue)
{
lue.printStackTrace();
}
}
public void play()
{
if (volume != Volume.MUTE)
{
if (clip.isRunning())
clip.stop();
clip.flush();
clip.setFramePosition(0);
clip.start();
}
}
static void init()
{
values();
}
}
因此,当我调用SoundEffect.WALL.play()时,它整体播放效果很好,但是第一次播放时会出现一个巨大的延迟峰值。我该怎么做才能解决这个问题,最好还是使用Clips?
答案 0 :(得分:0)
使用单独的线程
Thread music = new Thread(new Runnable() {
@Override public void run() { your code }
};
music.start();