怎么播放很多音效?

时间:2014-03-25 23:56:26

标签: java audio

我正在尝试制作一个节奏游戏,当玩家在合适的时间点击音符时,它应该播放一个响亮的声音,并且有时会有很多快速音符。

我尝试了三种方法,但每个方法都有问题。

首先:我尝试使用AudioClip中的JavaFX类,因为我正在使用它来播放音乐...它有效,但有时会播放声音太晚了,播放时太多,几秒后它就会停止播放声音并使应用程序崩溃。

第二次之后,我找到AudioClip中的java.applet,通过Applet.newAudioClip(URL url)创建它,它可以正常运行,但有时却无法播放

第三:我尝试使用Clip,这与applet的AudioClip具有相同的效果

2 个答案:

答案 0 :(得分:3)

尝试使用JavaFX AudioClip class in Java 8,看看是否能解决您报告的JavaFX AudioClip播放问题(应该)。

关于JavaFX AudioClip崩溃

Java 7中的JavaFX存在问题:RT-35851 JVM crash playing AudioClip

在RT-35851的评论中,开发人员说:

  

在我的Windows 7机器上,我可以重现JDK 7u45(FX 2.2.45)和7u51(FX 2.2.51)上的错误。我得到一个没有堆栈跟踪的间歇性崩溃。发生这种情况时,JVM会重新启动。 。 。我让应用程序在JDK 8上运行了近2个小时(70,000次迭代),没有任何问题。所以这个bug特定于JDK 7 / FX 2。

关于JavaFX AudioClip播放时间

  

有时候播放声音太晚了

我也遇到过JavaFX AudioClip这个问题,但这只是我第一次播放AudioClip。作为解决方法,我所做的是在应用程序启动时为每个剪辑媒体文件播放剪辑,音量设置为零,然后在我真正需要时尝试播放它们之前将剪辑音量设置恢复正​​常。在我这样做之后,剪辑似乎立即播放。不确定Java 8是否仍然需要这种解决方法。

JavaFX问题跟踪器中还存在一个问题:RT-24912 delayed audio playback on AudioClip。 RT-24912被标记为“Lombard”的固定版,它是Java 8 JavaFX开发的代号,因此该问题的修复应该在Java 8中。

在RT-24912的评论中,开发人员说:

  

我找到了这个的根本原因并且正在测试修复。到目前为止,我无法重现我遇到的延迟或崩溃。 。 。 RT-25063的修复程序(在Windows 7和Mac OS X上测试)不再可重现,所以我正在解决这个问题。

关于可同时播放的JavaFX AudioClips的数量

在RT-24912的评论中,开发者注意到:

  

每个底层实现只能处理有限数量的同时播放剪辑(实际数字未定义),优先级用于确定超过该数量时将播放哪些剪辑。如果你没有达到那个限制,那么它没有任何效果。


如果您对JavaFX AudioClips有进一步的问题,请创建一个可重复的小代码示例,然后将代码示例和环境描述的错误记录到https://javafx-jira.kenai.com

答案 1 :(得分:0)

这可能会有所帮助

http://docs.oracle.com/javase/tutorial/sound/

"虽然采样音频是声音本身的直接表示,但MIDI数据可以被视为创建声音的配方,特别是音乐声音。"