缓存声音并为其创建实例

问题描述 投票:0回答:1

我目前正在编写游戏,现在我也想添加声音。我目前的方法效果很好,但我对此并不满意。

new Sound(new Resource().readAndGetStream("small_click.wav")).play();

此代码行在执行时会读取文件small_click.wav。但是我认为在需要时总是读取资源文件不是很有效。因此,我现在要做的是将声音缓存在变量中,或者不必重新从文件中加载声音。但是我也想从声音中创建一个新的对象,因此我可以多次播放它,并在扬声器中播放它。我找不到解决方法。我已经尝试使用线程,但是..此代码可以在没有任何线程的情况下工作。

如果您想知道,这是Sound类的代码:

public Sound(InputStream audioSrc) { try { InputStream bufferedIn = new BufferedInputStream(audioSrc); AudioInputStream audioStream = AudioSystem.getAudioInputStream(bufferedIn); clip = AudioSystem.getClip(); clip.open(audioStream); } catch { ...exception handling... } } public void play() { clip.setFramePosition(0); clip.start(); }

并且如果您想知道“ new Resource()。readAndGetStream()”的作用,请执行以下操作:它基本上会加载资源,并使用InputStream返回该资源的getResourceAsStream()

我目前正在编写游戏,现在我也想添加声音。我目前的方法效果很好,但我对此并不满意。 new Sound(new Resource()。readAndGetStream(“ small_click.wav”))。play(); ...

java audio resources inputstream clip
1个回答
0
投票
有了您的Sound类,您可以轻松创建“缓存”。例如,创建一个类型为Sound[] soundCache的数组,并执行示例中给出的代码行的第一部分。

soundCache[0] = new Sound(new Resource().readAndGetStream("small_click.wav"));

© www.soinside.com 2019 - 2024. All rights reserved.