如何使用Audio API对同一声音文件进行分层
How can I layer the same sound file with Audio API?
我有一个2秒长的声音。它绑定到回车键。我希望能够每秒多次按下回车键,从而实现同一声音的多层。
目前我可以启动声音,但下一个要等到第一个结束后才能播放。
这是我的代码,它可以工作,但不会在多个按键上叠加声音:
var fart = new Audio('http://www.soundjay.com/human/fart-01.wav');
$(document).keydown(function(e) {
if(e.keyCode == 13)
{
fart.play();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Click here then press enter.
这看起来可能包含了答案,但我无法获得任何适用于我的可执行代码:JavaScript/HTML5 中的音效
Audio.play方法不是异步的。因此,您的play()方法在返回主循环之前"等待"(blocks是正确的术语),直到它完成。
大多数JavaScript调用都是阻塞的(并且是单线程的),所以您的应用程序通常会等待某个东西完成后再转到下一行。要在JavaScript中执行异步操作,需要使用setTimeout或setInterval之类的函数来调用函数。
添加此行不会创建新层!但每次按键时,它都会导致音频文件被反复播放。无论是否已经过了2秒,每次都会从头开始。
var fart = new Audio('http://www.soundjay.com/human/fart-01.wav');
$(document).keydown(function(e) {
if(e.keyCode == 13)
{
fart.play();
fart.currentTime=0; // <- add this line
}
});
相关文章:
- 创建一个倒计时计时器脚本,该脚本计算声音文件的持续时间,而不是特定的日期
- 如何使用Audio API对同一声音文件进行分层
- 你能用sound.js在播放声音文件后5秒执行一个动作吗
- 如何在javascript中一个声音文件接一个声音地播放
- 当弹出窗口关闭时播放声音文件(谷歌扩展)
- 在一个网站上包含多个声音文件
- Javascript自动播放声音文件,单击其中一个按钮时停止
- 预加载声音文件
- 播放声音文件时突出显示句子
- 读取本地声音文件并在html5画布中获取波形
- 根据当前编号逐个播放声音文件
- PHP:在客户端站点上播放来自服务器的声音文件
- 如何检查声音文件是否在 JavaScript 中播放
- 谁能告诉我如何使用javascript或html或jquery在网页中播放声音文件
- 如何用javascript制作声音文件
- 将按顺序播放的声音保存为一个音频文件
- 我想根据队列播放多个声音文件
- 动态链接URL包含声音管理器2要播放的wav文件的位置
- 当满足特定条件时,可以让浏览器播放声音文件
- SoundJS如何/可以加载其他预加载程序加载的声音文件(如Pixi.Loader.Loader())