简而言之,我在我的应用程序中使用 .ogg 文件,并且有几个背景音轨需要循环播放。
但是,我循环播放音频文件的方法是简单地重新加载音频文件并再次播放。这种方法会在循环的每次播放之间产生延迟,这对于游戏所期望的无缝体验来说是不理想的。
有没有一种方法我不必每次都重新加载文件?如有必要,我愿意将音频文件保存在内存中。
这是我的 Sound 类,它的功能有所减少,可以解决问题的核心:
以下库可能是播放某些文件类型所必需的,并且应该与上述文件一起编译:(链接)
对于未来的读者,以防上述链接过期,使用的库如下:
jl1.0.1.jar
jogg-0.0.7.jar
jorbis-0.0.17-1.jar
mp3spi1.9.5.jar
vorbisspi1.0.3.jar
使用这个 Sound 类和这个 ogg 文件(来自 Undertale 的 Spear of Justice),这是一个显示问题的简单类:
import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException, UnsupportedAudioFileException, InterruptedException {
//Replace the path with the path to the downloaded soj.ogg file or another test file
Sound spearOfJustice = new Sound("C:\\Users\\gigibayte\\Desktop\\soj.ogg", true);
spearOfJustice.play();
//Ensure that this is greater than or equal than the length of the audio file chosen above in seconds.
int songSeconds = 240;
//Song is played twice to show looping issue
Thread.sleep(songSeconds * 2 * 1000);
}
}
犯罪嫌疑人X
相关分类