你这个 flag什么时候重置为false呢?然后你的5秒的定时器作用意义是什么?
InnerAudioContext音频播放bug- 当前 Bug 的表现(可附上截图) 进行远程的mp3音频播放的时候,发现开发工具上表现正常,但是真机(测试机子为小米Note3)却不正常(通过开发者工具的预览功能调试)。 测试的音频为一个按钮的点击音效。 以下是开发者工具的控制台输出截图:[图片] 一次playCount对应一次canPlayCount,声音能在执行play()接口的时候马上播放。 以下是真机(小米Note3)的控制台输出截图(通过开发者工具的预览功能调试): [图片] 表现的效果为,playCount和canPlayCount次数并没有对上,调用play()的时候,声音并没有马上出来,而且,每次onWaiting有收到信息的时候,查看静态服务器后台输出,发现还会再次进行资源的请求。但每次都是用同一个innerAudioContext对象进行播放,按理来说,不应该重复加载资源才对。服务端输出内容如下:[图片] - 预期表现 资源加载成功之后,应该是调用了play()接口,就要马上有声音出来才对,而且不应该每次play都重复进行远程资源的加载。 - 复现路径 - 提供一个最简复现 Demo function testAudio(url, obj){ obj.canPlayCount = 0; obj.playCount = 0; var flag = false; var innerAudioContext = wx.createInnerAudioContext(); var startPlay = function(){ if(flag) return; flag = true; window.setInterval(function(){ console.log("playCount---->", ++obj.playCount, " ", mo.DATE.format(mo.DATE.date())); innerAudioContext.play(); }, 5000); }; // var startPlay2 = function(){ // console.log("playCount---->", ++obj.playCount, " ", mo.DATE.format(mo.DATE.date())); // innerAudioContext.play(); // }; innerAudioContext.onCanplay(function () { console.log("canPlayCount---->", ++obj.canPlayCount, " ", mo.DATE.format(mo.DATE.date())); startPlay(); }); innerAudioContext.onWaiting(function() { console.log('onWaiting---->', obj.playCount); }); innerAudioContext.onEnded(function (e) { console.log("onEnded") }); innerAudioContext.src = url; } 调用: testAudio(url, {});url为一个远程的mp3地址。
2019-03-04