2009-04-09 73 views
3

如何在同一时刻多次播放相同的声音,同时播放多种其他声音?现在我有一个“剪辑”播放,但它不会与自身重叠。 (我听到一颗子弹射击,声音完成,然后再次播放)。我正在用快速子弹射击系统编写游戏,但我无法让声音很好地工作。当你每秒钟在屏幕上产生20+的时候,每半秒只能听到一颗子弹,这听起来并不“正确”。在Java中混合声音?

任何帮助?指针? :d

回答

1

这似乎回答你的问题:

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

报价:

“换句话说,一个剪辑对象不能与自己搭配,只能用其他的声音这个过程作品如果你使用短的声音效果,那么它会很好,但如果你的声音片段长度超过1秒或更长,听起来会有点奇怪。[...]如果你想反复混合一个片段,有两个重要的选项(另一个不太可能选项): 1)将声音文件加载到多个Clip对象(例如数组),然后按顺序播放每一个。每当你需要播放这个特定的声音,只需遍历数组并找到一个已经播放完毕的剪辑,然后再次开始播放。“

所以原则上Java不会混合,只是不在一个剪辑中。

0

AudioClip可能是你在找什么 - 我用它在游戏中打短.wav声音效果,它并不完美,但它工作正常的大部分时间

+0

使用applet.AudioClip会导致我的游戏偶尔冻结。有些原因会中断我的游戏计时器。 – trusktr 2013-11-25 06:15:36

1

在播放20个bullit剪辑一次可能。可能会很好,我做了一次风铃,一次播放7个钟声,重叠(每次约3或4秒钟),然后将它设置为播放大约100个钟声每5秒钟一次。但该计划没有做任何其他事情。

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

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

每个bullit开始。这是最常做的事情。与重叠的Clip解决方案相比,它使用更少的CPU和更少的RAM。