手机浏览器音频内核的坑
在华为4.4的设备上,发现H5做的一款小游戏不能播放声音,用cocos2d-js的可以正常播放。手机的UA标识:
Mozilla/5.0(Linux;U;Android 4.3; zh-cn;HUAWEI B199 Build/HuaweiB199)
AppleWebKit/534.30(KHTML,link Gecko)
Version/4.0 Mobile Safari/534.30;360 Aphone Browser(6.9.0)
报的错是SynataxError : Invalid DestinationNode
通过ajax加载mp3文件后,调用createBufferSource方法得到audio source对象,再调用connect时就报错了。
然后我测试的时候发现audio obj并没有createGaub方法,将它注释掉之后调用start方法报该方法不存在。这时候我搜索到这篇文章,替换一下就OK了
使用noteOn代替start方法(新的API采用start方法,老版本createGain方法也是不支持的),另外一种方法是引入一个补丁js文件来解决
https://github.com/cwilso/webkitAudioContext-MonkeyPatch
webaudio的示例教程:http://www.html5rocks.com/en/tutorials/webaudio/intro/?redirect_from_locale=zh
额外吐槽一下,cocos2d-js 架构部分写的真是惨不忍睹,多的不说了自己看源码去了,再说要被人拍砖了。