在 java 中播放声音(2)

27 篇文章 0 订阅
13 篇文章 0 订阅

声音是一个游戏至关重要的部分。

上一次我谈了利用AudioClip 简单两行代码来播放声音(http://blog.csdn.net/cnmm22/article/details/44674173)。今天我介绍一下另一种方法,利用AudioStream。

使用这两个方法过程中定位一个资源的过程要难于使用方法本身。

上一次我们给 AudioClip 传进一个 URL 从而定位一个资源,这一次,我们延续这个思路,完善一下怎样在java中定位一个资源文件。

这一次。我换一种写法:

String path = new File(getClass().getClassLoader().getResource(“”).toURI()).getPath();
FileInputStream fileau = new FileInputStream(path + “\sounds\1\1.mp3”);

这次我们没有传 URL,但首先同样利用反射机制,getClass().getClassLoader().getResource.toURI()).getPath(),拿到项目 bin 文件夹在电脑里的绝对位置,因为是反射,所以在文件被移动后仍然能找到资源。 之后的 path + “\sounds\1\1.mp3” 是文件本身的urI,其中sounds/1 文件夹为示范,代表在bin 下滴任意路径。注意其中反斜杠由双反斜杠代替。

我们把这个path (String name),传给 FileInputStream,从而得到我们要播放 AudioStream 的资源文件。

接下来是播放代码:

AudioStream as = new AudioStream(fileau);
AudioPlayer.player.start(as);

假设我们这次还是用 URL来定位一个资源文件,参考代码为:

URL u = XXX.class.getClassLoader().getResource(“sounds/1/diao.wma”);
as = new AudioStream(u.openStream());
AudioPlayer.player.start(as);

如果我们需要重复播放一首音乐,需要这样写:

AudioData data = as.getData();
ContinuousAudioDataStream gg = new ContinuousAudioDataStream(data);
AudioPlayer.player.start(gg);

最后别忘:as.close();当然还有 try catch .

最后我需要说明。 java 我这次提到的两中声音播放的方法,对所有音频文件的支持并不是很理想,有很多格式,比如 mp3是无法播放滴,文件一般情况下都需要转换成 wav,在这之后因为转码的问题,甚至不一定所有的 wav 都能播放,这样会使文件过大,而且目前在jdk1.8 我还没找到很好的暂停,继续播放音乐的方法。所以我希望本文能够多给与 java里通过反射定位一个资源文件滴一些参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值