java - 如何在Java中高效地快速连续发出一个声音?

标签 java audio

一些背景信息: 我正在制作一个自上而下的僵尸波生存游戏,并且一直在使用 javax.sound.sampled 中的 Java 剪辑,我可以毫无困难地加载和播放声音,但在我的游戏中有自动武器,需要以相当快的连续性一遍又一遍地播放相同的声音。目前,每个 Gun 对象都拥有一个 Clip 字段,该字段会停止并设置在第 0 帧,并在每次枪开火时播放。这导致有些枪甚至听不到声音,因为它们开火速度如此之快。我想我可以通过每次必须播放声音时创建一个新的剪辑来解决这个问题,但这是最有效的解决方案吗? Java Sound API 中还有其他东西可以让我轻松地做到这一点吗?非常感谢您的帮助!

编辑:我被告知要添加此信息,循环声音不会作为解决方案,因为它会完全播放声音然后再次播放,但声音本身比两次发射之间的时间长,因此每个声音都需要有一些重叠。

最佳答案

使用固定的 Clips 数组,大小应根据实验得出。我们还将保留最新播放声音的索引

当枪开火时,增加索引(环绕),停止并开始数组中的下一个剪辑。 (如果剪辑太长并且仍在播放,我们需要停止剪辑)。

关于java - 如何在Java中高效地快速连续发出一个声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808748/

相关文章:

java - 处理线程池中的优先级

java - 如何从 void 方法传递变量?

java - 获取KeyEvent的来源

audio - SimpleSDAudio Error 48含义

python - PyDub:结合音频大小错误?

java - JVM 内部分析器?

java - 为什么基于 Glass/GDK 的 VoiceListener 在 XE16 中只捕获一次 VoiceCommand?

android - 错误的 Intent Uri 数据共享音频文件

audio - 在树莓派 Windows IOT 上录制 mp3 格式的音频文件

Android 模拟器的音频停止工作