我具有此功能,可以为不同的琴键播放不同的声音。但是,如果我按一个键,然后立即按另一个键,则先前的声音仍会播放。
我的问题是,播放新声音时如何取消上一个声音?
代码如下:
window.addEventListener("keydown", checkKeyPressed, false);
function checkKeyPressed(evt) {
if (evt.keyCode == "81") { //q
document.getElementById('enklyd').play();
}
if (evt.keyCode == "87") { //w
document.getElementById('lyd1').play();
}
if (evt.keyCode == "69") { //e
document.getElementById('lyd2').play();
}
if (evt.keyCode == "82") { //r
document.getElementById('lyd3').play();
}
if (evt.keyCode == "84") { //t
document.getElementById('lyd4').play();
}
if (evt.keyCode == "89") { //y
document.getElementById('lyd5').play();
}
}
答案 0 :(得分:2)
这实际上不是“停止” if语句的问题,因为他们各自正确地完成了工作。您要停止的是正在播放的声音片段。
为此,您可以使用.pause()
方法,将.currentTime
设置为0
,或者我相信您也可以将音量设置为0,然后播放。
如评论中所述,有一些SO问题可能已经回答了这一问题。有没有一种独特的情况无法解决?
答案 1 :(得分:0)
我认为这对您有用:
var e = document.getElementById('enklyd');
function checkKeyPressed(evt) {
if (evt.keyCode == "81") { //q
e.pause();
e.currentTime = 0;
e = document.getElementById('enklyd');
e.play();
}
if (evt.keyCode == "87") { //w
e.pause();
e.currentTime = 0;
e = document.getElementById('lyd1');
e.play();
}
if (evt.keyCode == "69") { //e
e.pause();
e.currentTime = 0;
e = document.getElementById('lyd2');
e.play();
}
if (evt.keyCode == "82") { //r
e.pause();
e.currentTime = 0;
e = document.getElementById('lyd3');
e.play();
}
if (evt.keyCode == "84") { //t
e.pause();
e.currentTime = 0;
e = document.getElementById('lyd4');
e.play();
}
if (evt.keyCode == "89") { //y
e.pause();
e.currentTime = 0;
e = document.getElementById('lyd5');
e.play();
}
}
答案 2 :(得分:0)
实际上,问题与scan.nextInt()
条件无关。但是您可以尝试以下代码,我认为这对您来说很好。
if
答案 3 :(得分:0)
您应该使用'switch'而不是'if'。只需在所有元素中添加一个通用类
const yourDiv = document.querySelector('yourDiv');
window.addEventListener("keydown", checkKeyPressed, false);
function checkKeyPressed(evt) {
yourDiv.currentTime = 0;
switch(evt) {
case '81':
document.getElementById('enklyd').play();
break;
case '87' :
document.getElementById('lyd1').play();
break;
case '69' :
document.getElementById('lyd2').play();
break;
case '82' :
document.getElementById('lyd3').play();
break;
case '84' :
document.getElementById('lyd4').play();
break;
case '89' :
document.getElementById('lyd5').play();
break;
default :
return null;
}
}