首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java剪辑在第一次播放时出现延迟

Java剪辑在第一次播放时出现延迟
EN

Stack Overflow用户
提问于 2018-04-01 15:16:00
回答 1查看 137关注 0票数 0

我有游戏的音效。在游戏画面打开时,第一个声音会滞后。在声音播放之后,不会再有延迟。这是我的剪辑播放器:

代码语言:javascript
复制
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()时,它总体上运行得很好,但它第一次运行时出现了一个巨大的滞后峰值。我能做些什么来解决这个问题,最好还是使用剪辑?

EN

回答 1

Stack Overflow用户

发布于 2018-04-01 16:07:58

使用单独的线程

代码语言:javascript
复制
Thread music = new Thread(new Runnable() {
    @Override public void run() { your code }
};
music.start();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49595727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档