我正在用 jQuery 开发这个最简单的鼓机。非常基本的事情,没有音序器什么的,只是分配给 PC 键盘上的按键事件的样本。我基本上都记下来了,正如您从下面的代码中看到的:
$(document).ready(function(){
drumInit(4);
});
function drumInit(count){
var samples = [];
for(i = 0; i < count; i++) {
sample = new Audio('sample-' + i + '.wav');
samples.push(sample);
}
samples[2].volume = .3;
samples[3].volume = .4;
$(document).keydown(function(e){
switch(e.which) {
case 90:
samples[0].play();
break;
case 88:
samples[2].play();
break;
case 67:
samples[1].play();
break;
case 86:
samples[3].play();
break;
default: return;
}
e.preventDefault();
});
}
如您所见,函数drumInit
控制样本加载到数组中,然后使用该数组将声音分配给每个按键事件。
一切都运行得很好。
我的问题是:当我非常快地第二次按下同一键时(示例尚未完成),它不会重新触发。我希望如此。这样我就可以从中敲出一些病态的模式,丛林风格(;))。
我试图在第二次按下时强制重新触发每个按键事件,大致如下:
case 90:
samples[0].play();
if(samples[0].playing) {
samples[0].pause();
samples[0].ended;
samples[0].play();
}
break;
但是 - 正如你可以想象的 - 无济于事。 所以,我的问题是:我可以在完成之前重新触发音频样本吗?如果可以的话,该怎么做? (理想情况下,在没有完成第一个新闻发布会的情况下开始第二个新闻发布会是完美的,但我们可以做到)。任何和所有帮助将不胜感激。
最佳答案
要解决此问题,只需设置 currentTime
字段并播放示例:
samples[0].currentTime = 0;
samples[0].play();
关于javascript - 如何在 jQuery 中重新触发尚未完成的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35247790/