2009-04-09 114 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。