我正在动态创建音频文件并动态更改源.但是,在我更改src并尝试更改currentTime后,我总是会收到无效状态错误.你是如何进行测试的呢?或者更好地在事件准备好时触发事件,然后调用currentTime来改变其音频位置.
this.doneLoading = function(aTime){ try{ this.mAudioPlayer.currentTime = aTime / 1000.0; }catch(err){ console.log( err ); } this.mAudioPlayer.play(); } this.playAtTime = function(aTime) { Debug("play at time audio: " + aTime); Debug("this.mAudioPlayer.currentTime: " + this.mAudioPlayer.currentTime); this.startTime = aTime; if (this.mAudioPlayer.src != this.mAudioSrc) { this.mAudioPlayer = new Audio(); this.mAudioPlayer.src = this.mAudioSrc; this.mAudioPlayer.load(); this.mAudioPlayer.play(); this.mAudioPlayer.addEventListener('canplaythrough', this.doneLoading(aTime), false ); } else if ((isChrome() || isMobileSafari()) && aTime == 0) { this.mAudioPlayer.load(); this.mAudioPlayer.currentTime = aTime / 1000.0; this.mAudioPlayer.play(); Debug("Reloading audio"); }else{ this.mAudioPlayer.currentTime = aTime / 1000.0; this.mAudioPlayer.play(); } };
Svish.. 19
对于那些真正需要测试以防止此无效状态错误的人,您可以尝试这样做:
if(this.readyState > 0) this.currentTime = aTime;
似乎无论如何都适合我:)