我已将音频文件加载到对象的属性中。我将其用作精灵,其中每个部分都指定了开始时间和结束时间。然后,我使用以下代码播放音频文件的特定部分:
speak: function(str) {
this.vo.currentTime = 0;
var curr = {};
curr = this.sprite[str];
this.vo.currentTime = curr[0];
this.vo.volume = _data.vol[1];
this.vo.play();
var onTimeUpdate = function() {
if (this.currentTime >= curr[1]) {
this.pause();
this.load();
this.currentTime = 0;
}
};
this.vo.addEventListener('timeupdate', onTimeUpdate, false);
}
“ vo”是加载为vo = new Audio('..file..')
的音频文件
“ str”是属性的名称,其中包含该部分的开始和结束时间。例如:如果我通过aud.speak('hello');
,则它将在精灵中显示“你好”的部分。
问题:播放了一个声部之后,其他大多数声部将无法播放。我几乎尝试了所有操作。这就是为什么您也看到.load(), .pause(), .currentTime = 0;
的原因。
答案 0 :(得分:0)
我通过每次调用speak()
方法时重新加载音频文件来解决此问题。由于文件是在本地托管的,因此重新加载文件不是问题,但对于使用托管内容的人来说,它可能不是最佳解决方案。
this.vo = new Audio('..file..');
我在speak()
方法的开头添加了这一行。