我有游戏的音效。在游戏画面打开时,第一个声音会滞后。在声音播放之后,不会再有延迟。这是我的剪辑播放器:
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()时,它总体上运行得很好,但它第一次运行时出现了一个巨大的滞后峰值。我能做些什么来解决这个问题,最好还是使用剪辑?
发布于 2018-04-01 16:07:58
使用单独的线程
Thread music = new Thread(new Runnable() {
@Override public void run() { your code }
};
music.start();https://stackoverflow.com/questions/49595727
复制相似问题