gpt4 book ai didi

javascript - 当您想在按住按键但只播放一次的 JavaScript 中使用它们时,如何避免重复的按键消息?

转载 作者:行者123 更新时间:2023-11-28 02:30:25 24 4
gpt4 key购买 nike

我有一段代码,如下所示,并且运行良好。它的作用是,当鼠标单击名为 Synth 的 div 时,它会发出振荡器声音。然后,当释放鼠标按钮时,它会停止播放振荡器。

 synth.onmousedown= function () {
oscillator = context.createOscillator(), // Creates the oscillator
oscillator.type = synthWaveform.value;
oscillator.frequency.value = pitchInput.value;
oscillator.connect(context.destination); // Connects it to output
oscillator.noteOn(0);


};



synth.onmouseup = function () {
oscillator.disconnect();

};

然后我添加了下面的代码,以便当用户按下键盘字符时它会触发振荡器。问题是,当按住该键时,它会重复播放,然后在释放键盘字符时不会停止。我想知道是否有任何库或代码可以用来规避这个问题。我们的目标是让最终结果像鼠标向下/向上效果,但通过键盘移动触发声音。谢谢。

$('body').keydown(function() {
oscillator = context.createOscillator(), // Creates the oscillator
oscillator.type = synthWaveform.value;
oscillator.frequency.value = pitchInput.value;
oscillator.connect(context.destination); // Connects it to output
oscillator.noteOn(0);
});

$('body').keyup(function() {
oscillator.disconnect();

});

最佳答案

如果你需要比下面的选项更奇特的东西,你可以使用 underscore.js debounce。

var keydown = false;

$('body').keydown(function() {
if(!keydown){
oscillator = context.createOscillator(), // Creates the oscillator
oscillator.type = synthWaveform.value;
oscillator.frequency.value = pitchInput.value;
oscillator.connect(context.destination); // Connects it to output
oscillator.noteOn(0);
keydown = true;
}
});

$('body').keyup(function() {
oscillator.disconnect();
keydown = false;
});

关于javascript - 当您想在按住按键但只播放一次的 JavaScript 中使用它们时,如何避免重复的按键消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14301728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com