我正在播放一个小音频剪辑点击每个链接在我的导航
HTML代码:
<audio tabindex="0" id="beep-one" controls preload="auto" >
<source src="audio/Output 1-2.mp3">
<source src="audio/Output 1-2.ogg">
</audio>
JS代码:
$('#links a').click(function(e) {
e.preventDefault();
var beepOne = $("#beep-one")[0];
beepOne.play();
});
到目前为止一切正常。
问题是当一个声音剪辑已经运行,我点击任何链接没有发生。
我试图停止点击链接时已经播放的声音,但在HTML5的音频API中没有直接事件
我试着遵循代码,但它不工作
$.each($('audio'), function () {
$(this).stop();
});
有什么建议吗?
我在寻找一些类似的东西,因为制作一个应用程序,可以用来图层彼此的声音聚焦。我最终做的是-当选择一个声音时,用Javascript创建音频元素:
const audio = document.createElement('audio') as HTMLAudioElement;
audio.src = getSoundURL(clickedTrackId);
audio.id = `${clickedTrackId}-audio`;
console.log(audio.id);
audio.volume = 20/100;
audio.load();
audio.play();
然后,附加子文件实际上表面的音频元素
document.body.appendChild(audio);
最后,当取消选择音频时,您可以停止并完全删除音频元素-这也将停止流。
const audio = document.getElementById(`${clickedTrackId}-audio`) as HTMLAudioElement;
audio.pause();
audio.remove();
我喜欢做的是使用Angular2完全删除控件,然后当下一首歌有音频路径时,它会被重新加载:
<audio id="audioplayer" *ngIf="song?.audio_path">
然后当我想在代码中卸载它时,我这样做:
this.song = Object.assign({},this.song,{audio_path: null});
当下一首歌曲被分配时,控件完全从头开始重新创建:
this.song = this.songOnDeck;