lufy's legend

标题: 有什么办法可以让背景音乐加速播放么? [打印本页]

作者: aaron    时间: 2017-7-5 10:48
标题: 有什么办法可以让背景音乐加速播放么?
本帖最后由 aaron 于 2017-7-5 11:05 编辑

RT
背景:游戏人物拿到特效功能后加速奔跑,想让背景音乐一起加速。

可否让 LSound  对象加速播放。
微信截图_20170705110519.png
查阅资料发现这个方法可以,lufylegend可否支持下,如何在lufylegend中使用这个方法?
http://www.jb51.net/w3school/html5/av_prop_playbackrate.htm
作者: lufy    时间: 2017-7-5 11:15
LSound有个隐藏属性data
比如sound是一个LSound对象,那你可以通过sound.data获取Audio对象
当然,如果支持WebAudio的时候,sound.data就是一个webkitAudioContext对象或者AudioContext对象
具体你要怎么操作,就是自己控制了
作者: aaron    时间: 2017-7-5 14:19
本帖最后由 aaron 于 2017-7-5 14:23 编辑
lufy 发表于 2017-7-5 11:15
LSound有个隐藏属性data
比如sound是一个LSound对象,那你可以通过sound.data获取Audio对象
当然,如果支持 ...

微信截图_20170705141800.png
打印出来时undefined
查阅资料发现不能直接改变 AudioContext 对象的playbackrate来调整音频速度?

[object HTMLVideoElement]是可以直接改变playbackrate来进行速度调整的

有什么解决方案或者思路么?

作者: lufy    时间: 2017-7-6 09:41
aaron 发表于 2017-7-5 14:19
打印出来时undefined
查阅资料发现不能直接改变 AudioContext 对象的playbackrate来调整音频速度?

WebAudio的画,应该是用AudioBufferSourceNode.playbackRate吧?具体怎么用你查一下吧
引擎也只是封装一下,如果对原对象做什么操作的话,需要自己扩展
或者,你直接关闭WebAudio也行,但是多声道就用不了了
作者: aaron    时间: 2017-7-6 09:47
lufy 发表于 2017-7-6 09:41
WebAudio的画,应该是用AudioBufferSourceNode.playbackRate吧?具体怎么用你查一下吧
引擎也只是封装一下 ...

  背景音乐没走lufylegend的LSOUND对象,直接用原生JS实现进行操作的

https://developer.mozilla.org/en ... dioBufferSourceNode
参考这里的
作者: lufy    时间: 2017-7-6 10:05
aaron 发表于 2017-7-6 09:47
背景音乐没走lufylegend的LSOUND对象,直接用原生JS实现进行操作的

https://developer.mozi ...

引擎中的处理this.bufferSource = this.data.createBufferSource();
也就是说在支持WebAudio的时候,LSound的bufferSource属性就是AudioBufferSourceNode了
不过用原生的也一样,解决了问题就好
作者: aaron    时间: 2017-7-6 10:50
本帖最后由 aaron 于 2017-7-6 10:57 编辑
lufy 发表于 2017-7-6 10:05
引擎中的处理this.bufferSource = this.data.createBufferSource();
也就是说在支持WebAudio的时候,LSou ...

这个我有尝试过,不过打印出来的AudioBufferSourceNode 对象的buffer属性为null
微信截图_20170706104947.png 微信截图_20170706105107.png

下面是用原生JS实现的AudioBufferSourceNode 对象的buffer属性不为null
ccc.png aaa.png

ttt.png (30.09 KB, 下载次数: 1956)

ttt.png


作者: lufy    时间: 2017-7-6 11:35
aaron 发表于 2017-7-6 10:50
这个我有尝试过,不过打印出来的AudioBufferSourceNode 对象的buffer属性为null

是这样的,
引擎中AudioBufferSourceNode的buffer是在play播放的时候才设置的
代码在这里
https://github.com/lufylegend/lu ... bAudio.js#L365-L366
作者: aaron    时间: 2017-7-6 14:27
lufy 发表于 2017-7-6 11:35
是这样的,
引擎中AudioBufferSourceNode的buffer是在play播放的时候才设置的
代码在这里

可以了,多谢指点,看来得多看看源码,学习下




欢迎光临 lufy's legend (http://lufylegend.com/forum/) Powered by Discuz! X2.5