我发现如何快速播放短声音的唯一方法(如此之快以至于第二个声音在第一个结束之前开始)是实际加载 5 或 10,如果您必须再次播放但已经在播放,只需转到下一个,没有播放:
var soundEls = [];//load 10 audios instead of 1
for(var i=0;i<10;i++){
var soundEl = document.createElement('audio');
soundEl.src = url;
soundEl.preload = 'auto';
$(this._soundEl).append(soundEl);
soundEls.push(soundEl);
}
var soundElIndex = 0;
return {play:function(){
var soundEl = soundEls[soundElIndex];
if(soundEl.duration > 0 && !soundEl.paused){
//already playing, switch to next soundEl
soundElIndex++;
if(!soundEls[soundElIndex]) soundElIndex=0;
soundEls[soundElIndex].play();
}else{
//not playing
soundEl.play();
}
}};
这样做的结果是您实际上可以在其自身上播放相同的声音。
可能不是正确的方法。