4

如何在任何给定时间多次播放相同的声音而同时播放许多其他声音?现在我有一个“剪辑”播放,但它不会与自身重叠。(我听到一颗子弹开火,声音结束然后再次播放)。我正在编写一个带有快速子弹发射系统的游戏,但我无法让声音正常工作。当您每秒在屏幕上生成 20 多个子弹时,每半秒只听到一发子弹听起来并不“正确”。

有什么帮助吗?指针?:D

4

3 回答 3

1

这似乎回答了你的问题:

http://my.safaribooksonline.com/9781598634761/ch09lev1sec3

引用:

“换句话说,单个 Clip 对象不能与自身混合,只能与其他声音混合。如果您使用较短的声音效果,此过程效果很好,但如果您的声音片段长度为一秒或更长,则听起来很奇怪。[.. .] 如果要重复混合单个剪辑,有两个重要的选项(还有一个不太可能的选项): 1)将声音文件加载到多个剪辑对象(例如数组)中,然后按顺序播放每个剪辑。每当您需要播放此特定声音时,只需遍历数组并找到已播放完毕的剪辑,然后再次开始播放。”

因此,原则上 Java 确实会进行混合,而不是在单个剪辑中。

于 2009-04-09T07:16:11.710 回答
1

一次播放 20 个 Bullit 剪辑可能会占用大量 CPU。可能没问题。我曾经制作了一个风铃,它可以播放 7 个重叠的铃声(每个大约 3 或 4 秒长),然后将其设置为每 5 秒播放大约 100 个铃声。但该程序没有做任何其他事情。

使用 Clips,要做到这一点,您需要制作多个副本,并且所有音频数据都将坐在那里,占用 RAM。如果他们真的很矮,那不是这样的牺牲。但是对于快速射击,大多数游戏使用的解决方案是切断声音并重新启动。您不必将声音播放到最后。

myClip.stop();
myClip.setFramePosition(0);
myClip.start();

随着每一个子弹开始。这是最常做的事情。与重叠剪辑解决方案相比,它使用的 CPU 和 RAM 少得多。

于 2011-08-20T05:34:10.817 回答
0

AudioClip可能是您正在寻找的 - 我在播放短 .wav 音效的游戏中使用它,它并不完美,但在大多数情况下都能正常工作。

于 2009-04-09T09:00:04.580 回答