HTML5音频不';在我实际旋转Nexus 7之前,我不会玩
我正在尝试使用Android Chrome浏览器让HTML5音频精灵在Nexus7上工作。要更改正在播放的音频,请更改音频播放器的源,然后重新加载音频播放器 然后,我必须检测两个“timeupdate”事件,以确保音频实际上正在播放,因为 这是一个大页面的一部分,所以我不能全部发布,但设置基本上归结为:HTML5音频不';在我实际旋转Nexus 7之前,我不会玩,html,html5-audio,nexus-7,Html,Html5 Audio,Nexus 7,我正在尝试使用Android Chrome浏览器让HTML5音频精灵在Nexus7上工作。要更改正在播放的音频,请更改音频播放器的源,然后重新加载音频播放器 然后,我必须检测两个“timeupdate”事件,以确保音频实际上正在播放,因为 这是一个大页面的一部分,所以我不能全部发布,但设置基本上归结为: <body> <audio id="myAudioPlayer" src="audio_1.wav"> <script type=javascript&g
<body>
<audio id="myAudioPlayer" src="audio_1.wav">
<script type=javascript>
function changeAudio() {
var audioplayer = document.getElementByID("myAudioPlayer");
audioplayer.currentSrc = getNextAudioClip();
audioplayer.load();
audioplayer.play();
audioplayer.addEventListener('timeupdate', firstTimeUpdate, false);
}
function firstTimeUpdate() {
this.removeEventListener('timeupdate', firstTimeUpdate, false);
this.addEventListener('timeupdate', secondTimeUpdate, false);
this.play();
}
function secondTimeUpdate() {
this.removeEventListener('timeupdate', secondTimeUpdate, false);
this.addEventListener('timeupdate', timeSliderUpdate, false);
}
</script>
</body>
函数changeAudio(){
var audioplayer=document.getElementByID(“myAudioPlayer”);
audioplayer.currentSrc=getNextAudioClip();
audioplayer.load();
audioplayer.play();
audioplayer.addEventListener('timeupdate',firstTimeUpdate,false);
}
函数firstTimeUpdate(){
this.removeEventListener('timeupdate',firstTimeUpdate,false);
this.addEventListener('timeupdate',secondTimeUpdate,false);
这个。play();
}
函数secondTimeUpdate(){
this.removeEventListener('timeupdate',secondTimeUpdate,false);
this.addEventListener('timeupdate',timeSliderUpdate,false);
}
因此,这在最初几次运行良好。音频已更改,“timeupdate”将激发以使我们转到firstTimeUpdate(),然后音频开始播放,“timeupdate”将再次激发以使我们转到secondTimeUpdate()
但是第六次或第七次我更改音频时,第二个“timeupdate”事件不会触发,因此永远不会达到secondTimeUpdate(),除非我将Nexus 7旋转90度,然后再将其旋转回来,然后音频开始播放,第二个“timeupdate”事件触发,所有事情都重新开始工作
这种情况一直持续到我第12次或第13次更改音频,在这之前,观察到相同的情况。getNextAudioClip()函数工作正常(即返回有效的音频文件)
我被这个难住了。有人能猜到这里到底发生了什么,或者为什么旋转Nexus7来“修复”它吗
编辑:好的,在多花点时间来处理这个问题之后,这个问题似乎与垃圾收集有关。旋转Nexus7似乎会触发之前加载的音频精灵上的垃圾收集,从而允许新精灵加载和播放。更改到不同的选项卡,然后再返回也可以做到这一点。所以,如果我能以某种方式自动获得这个音频GC,我可以有一个解决办法