java - 如何播放很多音效?

标签 java audio

我正在尝试制作一个节奏游戏,当玩家在正确的时间敲击音符时,它应该播放击打声,有时会有很多快音。

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

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

第二:之后,我从java.applet中找到了AudioClip,通过Applet.newAudioClip(URL url),可以,但有时不播放。

第三:我尝试使用Clip,效果和applet的AudioClip

一样

最佳答案

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

关于 JavaFX AudioClip 崩溃

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

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

On my Windows 7 machine I can reproduce the bug on JDK 7u45 (FX 2.2.45) and 7u51 (FX 2.2.51). I get an intermittent crash with no stack trace. When this happens, the JVM restarts . . . I left the app running on JDK 8 for almost 2 hours (70,000 iterations) with no problem. So this bug is specific to JDK 7 / FX 2.

关于 JavaFX AudioClip 播放时序

sometimes it plays the sound too late

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

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

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

I found the root cause of this and am testing a fix. I've not been able to reproduce either the delay or the crash I was experiencing with the fix so far . . . No longer reproducible with the fix for RT-25063 (tested on Windows 7 and Mac OS X) so I'm resolving this.

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

在 RT-24912 的评论中,开发者指出:

Each underlying implementation can only handle a finite number of simultaneously playing clips (actual number is undefined) and the priority is used to determine which clips will be played when that number is exceeded. If you don't hit that limit then it has no effect.


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

关于java - 如何播放很多音效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22648793/

相关文章:

java - Android 应用程序仅占用屏幕的一部分

ios - 如何预加载音频文件xcode

python - 如何使用 VSCode 在 Jupyter notebook 中播放音频?

java - 假人的频率/音调检测

ios - 音频无法在所有 iOS 设备上播放

java - 在 IntelliJ 上访问在 GUI 设计器中创建的组件

java - 使用 Eclipse 的 Weblogic 连接池

java - 在 Jboss 4.2.3 中部署了 EJB3。我们如何访问它?

java - 为什么我的 couchbase 查看不到返回数据?

java.awt.Toolkit beep() 错误