我想实现一个功能,当用户按住Shift键时,播放器会加快速度。当用户释放Shift键时,播放器将恢复正常速度。现在,我的代码将在按住Shift键的同时递归提高速度,但我不知道为什么。请帮助我修复它。
button.addEventListener ("click", function() {
my_game = setInterval(game, speed);
});
window.onload = function() {
canv = document.getElementById("gc");
context = canv.getContext("2d");
document.addEventListener ("keydown", keyPush);
document.addEventListener ("keyup", keyRelease);
}
function keyPush(keyEvent) {
switch(keyEvent.keyCode) {
case 16:
clearInterval(my_game);
speed *= 0.1;
my_game = setInterval(game, speed);
break;
}
}
function keyRelease(keyEvent) {
switch(keyEvent.keyCode) {
case 16:
clearInterval(my_game);
speed /= 0.1;
my_game = setInterval(game, speed);
break;
}
}
最佳答案
您应该为正常速度使用一个常数,并在用户按下键时仅一次而不是每次按下键时减小/减小该常数:speed *= 0.1;
var NORMAL_SPEED = 1;
button.addEventListener ("click", function() {
my_game = setInterval(game, speed);
});
window.onload = function() {
canv = document.getElementById("gc");
context = canv.getContext("2d");
document.addEventListener ("keydown", keyPush);
document.addEventListener ("keyup", keyRelease);
}
function keyPush(keyEvent) {
switch(keyEvent.keyCode) {
case 16:
clearInterval(my_game);
speed = NORMAL_SPEED * 0.1;
my_game = setInterval(game, speed);
break;
}
}
function keyRelease(keyEvent) {
switch(keyEvent.keyCode) {
case 16:
clearInterval(my_game);
speed = NORMAL_SPEED;
my_game = setInterval(game, speed);
break;
}
}