我正在使用jQuery中最简单的鼓机。非常基本的东西,没有音序器,只有样本分配给PC键盘上的keydown事件。我基本上把它全部搞定了,你可以从下面的代码中看到:
$(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
控制加载到数组中的样本,然后用于将声音分配给keydown事件,每个事件由每个事件分配。
这一切都很好。
我的问题是:当我第二次非常快地按下相同的键时(样品尚未完成),它不会重新触发。我想要它。通过这种方式,我可以用它来解决一些生病的模式,丛林风格(;))。
我试图在第二次按下时强制重新触发每个关键事件,这些都是这样的:
case 90:
samples[0].play();
if(samples[0].playing) {
samples[0].pause();
samples[0].ended;
samples[0].play();
}
break;
但是 - 你可以想象 - 无济于事。 所以,我的问题是:我可以在音频样本完成之前重新触发吗?如果我能,怎么办呢? (理想情况下,如果没有完成第一次新闻播放,那么开始第二次新闻播放将是完美的,但我们可以管理)。任何和所有帮助将深表感谢。
答案 0 :(得分:1)
要解决此问题,只需设置currentTime
字段并播放示例:
samples[0].currentTime = 0;
samples[0].play();