开发一个H5游戏,需要预加载一些音频文件,并在特定的情况下播放。目前实现的代码是:
function loadSound(sounds, callback) { var toLoadLength = sounds.length; var loadLength = 0; for (var i = toLoadLength; i--;) { var src = sounds[i]; source[src] = new Audio(); source[src].addEventListener("canplaythrough", function () { loadLength++; if (toLoadLength === loadLength) { callback(); } }); source[src].src = gameDate.config.soundSrc + src; }}
在电脑上播放没问题,安卓手机没问题,到了iPhone就不行了,一直卡在加载环节,后来调试发现canplaythrough
事件没有触发,callback
没有运行。
请问有什么解决办法吗?
解决方案
问题解决,基于微信的H5页面
//引用微信JS-SDK
<script src="http://res.wx.qq.com/open/js/...
document.addEventListener("WeixinJSBridgeReady", function () {
document.getElementById('audio').load();//load重新加载音频,实现苹果预加载
}, false);