我正在尝试构建一个有开始按钮的游戏。按下此按钮后,游戏开始。该游戏有多个键盘按键事件。问题是当第n次按下开始按钮并且游戏开始第n次运行时,对于每个键盘按键事件,程序按下n次按键。以下是代码。
$(document).ready(function(){
$('.start_game').click( function(){
$(document).keydown(function(e){ // left button
if (e.keyCode == 37 && game_over_flag == 0)
{
if(a!=0)
{
remove_obj(a,b);
a=a-1;
placement(a,b);
check_collision(a,b);
}
}
});
});
});
因此,当第二次按下开始游戏然后按下箭头按钮一次时,需要两次点击。对于第三次开始游戏按钮点击,每一个按键击中三次,单击,我需要单次执行.Plz帮助。
答案 0 :(得分:2)
每次单击该按钮,都会添加一个新的事件处理程序。所以你需要解开它。
$('.start_game').click( function () {
$(document).off("keydown.game").on("keydown.game", function (e) {
...
或者更好的是不要在click事件中绑定,使用标志。
$(document).ready(function(){
var isActive = false;
$('.start_game').click( function(){
isActive = true
});
$(document).keydown(function(e){ // left button
if (!isActive) {
return;
}
if (e.keyCode == 37 && game_over_flag == 0)
...
答案 1 :(得分:1)
每场比赛结束后尝试
$(document).unbind('keydown');
每次用户点击时,您都会绑定一个新的事件处理程序。