<html !doctype>
<head>
<title>声音叠加播放</title>
</head>
<body>
<audio id="audio" src="音频地址" style="display:none"></audio>
<input id="btn" type="button" value="点击触发音效" />
<script>
var audio = document.getElementById('audio'),
btn = document.getElementById('btn');
btn.onclick = function() {
// 通过clone方法实现多个声音同时响起
audio.cloneNode().play();
};
</script>
</body>
</html>
为方便大伙儿测试,我把到代码写了一份,替换上面的"音频地址"即可。
问题是这样,之前某个项目需要做点击音效,如果用audio.play(), 同一时间内只能是一个audio响起,不能适应点击频率高的情况。所以我这里用了audio.cloneNode().play()。这确实能实现音效的叠加,但后面发现cloneNode()会造成audio的重复加载,没点一次就从服务器加载一次音频文件,在网速不够的情况下延迟特别明显。。
百度了一圈都没发现有人问到这个问题。。。
问一下各位,能不能克服文件重复加载的问题,或者换个方法实现声音的叠加?
感觉跟“收藏”功能的快速点击类似,你可以查看下这个技术:JS 函数节流和函数去抖。
http://www.cnblogs.com/fsjohnhuang/p/4147810.html