如何在Java游戏中播放声音?

2024-03-17

我使用以下代码成功在 Java (1.5) 小程序游戏中播放声音:

// get an available clip to play it
Clip clip = null;
for (Clip clipTemp : players) {
    if (!clipTemp.isOpen()) {
    clip = clipTemp;
        break;
    }
}
if (clip == null) {
    // no available player found, don't play
    return;
}

clip.open(audioFormat, audioByteData, 0, audioByteData.length);

clip.start();

(播放器是我在开始时打开的剪辑列表,目的是减少延迟,线路监听器在检索到停止事件时关闭线路。)

我面临的问题是播放声音时间歇性延迟最多 1 秒。这可真够可怜的。

有什么办法可以改善这一点吗?是SourceDataLines值得考虑?


只要您想播放剪辑,Java Applet 就会对您的剪辑进行流式传输,这就是为什么您会遇到延迟,因为声音文件尚未加载到内存中。

我已经有一段时间没有进行 Java 小程序编程了,但我确实记得我曾经预加载所有剪辑,然后后续的播放调用不会重新打开文件。

这是我的一个旧项目中的一些代码

Clip shoot;

private loadShootWav()
{
    AudioInputStream sample;
    sample = AudioSystem.getAudioInputStream(this.getClass().getResource("shoot.wav"));
    shoot = AudioSystem.getClip();
    shoot.open(sample);
}

public void playShootSFX()
{
    shoot.stop();
    shoot.setFramePosition(0);
    shoot.start(); 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Java游戏中播放声音? 的相关文章

随机推荐

  • 如何使用 imagemagick 制作高质量的动画图像

    我想从这些 png 图像制作一个动画 gif 我用这个命令来做到这一点 convert layers OptimizePlus delay 25x100 ps1 png loop 0 ps1 gif 它成功制作了 gif 动画 但是输出的质
  • 数据库中是否有用于版本控制的通用选项?

    我在开发项目中使用 SVN 的经验很少 而且我在关系数据库方面的经验也很少 我知道表和 SQL 语句等基本概念 但距离专家还很远 我想知道是否有像 SVN 这样的通用版本控制类型系统 但它使用数据库而不是文件 我想要与 SVN 相同的功能
  • android:back(设备后退按钮)事件在 Titanium 中不起作用

    您好 我正在从事 Android 应用程序开发 我正在使用 Titanium studio 进行开发 我创建了一个简单的应用程序 我想在我的应用程序中捕获设备后退按钮事件 因为我不想在钛中使用 android 默认选项卡 我正在创建自己的选
  • Reachability Classes 崩溃程序 - 不知道为什么

    我的应用程序中有一个需要联网的对象的 互联网感知 基类 所有需要互联网感知的对象都继承自它 正如你可以想象的那样 我分配和释放了很多这样的对象 互联网感知基类具有以下代码 用于与用于检查互联网状态的可达性类进行交互 import Reach
  • 如何使 div 为页面大小的 80%?

    我想让页面容器 div 的上边距为 10 下边距为 10 我怎样才能让div一直占据页面剩余的80 无论它是否有内容 这应该有效
  • 在 C++ 中迭代链表比在具有类似内存访问的 Go 中慢

    在各种情况下 我观 察到 C 中的链表迭代始终比 Go 中慢 10 15 我在 Stack Overflow 上第一次尝试解开这个谜团是here https stackoverflow com questions 50274433 iter
  • 如何在 Laravel 5.4 中为排队电子邮件设置动态 SMTP 数据?

    在我的应用程序中 每个用户都可以使用自己的 SMTP 服务器 因此必须提供配置 我正在使用 Laravel 通知来发送电子邮件 如果我不使用队列 这意味着同步 则没有问题 我做了一个自定义的可通知特征 config mail host gt
  • Jquery中获取Span id属性值

    我有一个 mytable 其中包含 mytd 而 Myspan 又包含我想要获取的 我想在jquery中获取 myspan 1 我该怎么做 在这里小试一下 mytable find td gt span attr value myspan
  • sweetalert:如何将参数传递给回调

    我正在使用 javascript 警报库甜蜜警报 http t4t5 github io sweetalert 我的代码是 function foo id swal title Are you sure text You will not
  • Chmod 未被识别为内部或外部命令

    尝试在 Windows 中安装 pycrypto 在命令提示符下 我输入 python setup py build 事情开始时一切正常 但是当它进入 运行 build configure 时 我收到此错误消息并且事情停止了 chmod 未
  • 如何在 System.Windows.Forms.WebBrowser 中调用自定义 Javascript?

    我正在加载包含以下代码的第三方网页 进入 WebBrowser 组件 后some code1已经执行了 我需要对 Dom 进行一些操作 这将使some code1无效的 问题是如何确定some code1被处决了吗 我做不到 private
  • 使用 Bold for Delphi 框架进行编码时提高可测试性

    背景我在一个由 7 名开发人员和 2 名测试人员组成的团队中工作 负责物流系统 我们使用 Delphi 2007 和模型驱动开发德尔福大胆 http boldfordelphi blogspot com 作为框架 该系统现已投入生产约 7
  • 没有名为 tkinter 的模块吗? [复制]

    这个问题在这里已经有答案了 所以昨晚我尝试开始使用 tkinter 我筛选了几篇关于如何安装它的文章和 YouTube 视频 我 以为 是通过brew安装的 还有activeTCL的包下载 我只是想制作一个简单的程序 这就是全部 from
  • jquery 屏蔽输入只有第一个数字可选,其余为强制

    我使用 jquery 屏蔽输入插件 需要有一个具有以下格式的电话字段 1 222 000 1114 我的代码如下所示 myPhone mask 9 999 999 9999 现在我似乎无法让它工作以使第一个数字可选 但其余数字是强制性的 所
  • django-modelstranslation 后备原始字段值

    我有一个大型 Django 应用程序 互联网用户正在积极使用它 我正在尝试添加django model翻译 http django modeltranslation readthedocs org en latest index html到
  • 我可以在 python 中对具有多个条件的 if-else 语句使用嵌套 for 循环吗?

    我编写了一个程序来检查棋盘是否有效 在我的代码的一部分中 我测试了各个部分的数量是否正确 count 是字典 它是我要检查的板的库存 例如 b代表黑色 w代表白色 count bking 1 wking 1 bpawn 3 bbishop
  • 如何在Python中使用比较和“如果不是”?

    在我的一个程序中 我怀疑我是否正确使用了比较 我想在做某事之前确保 u0 if not u0 lt u and u lt u0 step u0 u0 step change the condition until it is satisfi
  • 如何在 Ionic 中实现媒体查询

    我想为我的离子应用程序添加完整的背景图像 并为每个设备添加不同的图像 这是我的 CSS 代码 iPhone 6 媒体查询 media max width 750px and max height 1334px pane view backg
  • 在Doctrine 2.2中体现MySQL多态关联

    我将 Doctrine 2 2 0 与 Codeigniter 一起使用 我是 Doctrine 或者一般的 ORM 的新手 我正在基于 YAML 文件设置实体和代理类 效果很好 我在 Doctrine 类中反映数据库中的多态关联时确实遇到
  • 如何在Java游戏中播放声音?

    我使用以下代码成功在 Java 1 5 小程序游戏中播放声音 get an available clip to play it Clip clip null for Clip clipTemp players if clipTemp isO