gpt4 book ai didi

javascript - 如何在按住键盘按钮的情况下只播放一次声音?

转载 作者:行者123 更新时间:2023-12-03 10:13:48 25 4
gpt4 key购买 nike

最近我使用 JavaScript 创建了一个简单的代码。基本上,它是一个按一下即可播放声音的程序。声音持续 3-4 秒。一切都工作正常,直到我发现如果我按住某个键,声音就会重复播放。他们没有完成长度,而是继续从头开始玩。我想要的只是它播放到最后并停止,如果抬起键并再次按下,则会再次播放。

这是我的代码:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
</head>

<body>
<audio id="fart" source src="" type="audio/mpeg"></audio>
<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript">
var player = document.getElementById("fart");
//var keyIsDown = true;

var getCommand = function (pressedChar) {
var command = null;
if (keyIsDown) {
switch (pressedChar) {
case 'a':
//alert("I'm A.");
player.setAttribute("src", "1fart-07 C7.mp3");
player.play();
//keyIsDown = false;
break;
case 'b':
player.setAttribute("src", "2fart-05 D7.mp3");
player.play();
break;
case 'c':
player.setAttribute("src", "3fart-01 E7.mp3");
player.play();
break;
case 'd':
player.setAttribute("src", "4fart-03 F7.mp3");
player.play();
break;
case 'e':
player.setAttribute("src", "5fart Na G7.mp3");
player.play();
break;
case 'f':
player.setAttribute("src", "6fart Na A7.mp3");
player.play();
break;
case 'g':
player.setAttribute("src", "7fart Na B7.mp3");
player.play();
break;
case 'h':
player.setAttribute("src", "fart-07 C8.mp3");
player.play();
break;
default:
alert("OUT");
break;
}
return command;
} else {
command = null;
}
};
/////
/*$(document).keyup(function(e){
keyIsDown = true;
});*/

//////
$(document).keypress(function (e) {
var code = e.keyCode || e.which;
var pressedChar = String.fromCharCode(code).toLowerCase();
var command = getCommand(pressedChar);
keyIsDown = true;
});

$(document).ready(function () {
console.log("ready!");
});
///////
</script>
</body>
</html>

我用谷歌搜索发现this forum所以我尝试让它适应我的,但仍然没有成功。有人有什么建议吗?我也在Jquery找到了方法,但没有用。我觉得现在我已经接近答案了,但可能是我编码错误。请帮我。谢谢。

最佳答案

答案在这里...1)为您使用的每个 key 创建一个变量并将其设置为 true,例如 var q = true;一开始。2) 创建一个函数来检测键盘按钮是否弹起,使用与 keyDown 函数相同的变量。然后,将您在 (1) 中设置的变量设置为 true。

$(document).keyup(function (e) {
console.log("One of the keys is up");
var code = e.keyCode || e.which;
var pressedChar = String.fromCharCode(code).toLowerCase();
switch (pressedChar) {
case'q':
q = true;
break;
default:
console.log("Nothing");
}
});

3) 在播放音乐的主函数中,在开关盒内提供 if-else 函数来检测按键是否仍在按下。播放后();将变量设置为 false;

case 'q':
if (q) {
//alert("I'm A.");
player.setAttribute("src", "1fart-07 C7.mp3");
player.play();
q = false;
} else {
command = null;
console.log("q is holded"); // if the keyboard is pressed before it will be here.
}
break;

关于javascript - 如何在按住键盘按钮的情况下只播放一次声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29986611/

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