2014-09-04 57 views
0

所以基本上我想要第一个键(“q”)初始化setTimeouts,然后我想禁止它再次按下而setTimeouts正在运行,那么当setTimeouts结束了,重新让它再次按下。功能执行后禁用键

$(document).keydown(function(e) { 
    // if 'q' key is pressed, initalize setTimeouts 
    if (e.keyCode == 81) { 
     var rock = $('#rock'); 

     // disable 'q' key while setTimeouts are running   
     setTimeout(function() { 
      rock.css('background-position', '-34px -0px'); 
      setTimeout(function() { 
       rock.css('background-position', '-66px -0px'); 
       setTimeout(function() { 
        rock.css('background-position', '-96px -0px'); 
       }, 300); 
      }, 300); 
     }, 300); 
     // re enable 'q' key when setTimeouts are done  
    } 
}); 

任何想法?

回答

2

在开始超时前设置一个变量,并在完成时清除它。

var q_enabled = true; 
$(document).keydown(function(e) { 
    // if 'q' key is pressed, initalize setTimeouts 
    if (e.keyCode == 81 && q_enabled) { 
     q_enabled = false; // Disable Q key 
     var rock = $('#rock'); 
     setTimeout(function() { 
      rock.css('background-position', '-34px -0px'); 
      setTimeout(function() { 
       rock.css('background-position', '-66px -0px'); 
       setTimeout(function() { 
        rock.css('background-position', '-96px -0px') 
        q_enabled = true; // Re-enable it 
       }, 300); 
      }, 300); 
     }, 300); 
    } 
}); 
+0

谢谢先生,我不能相信我错过了使用布尔值! – tinthetub 2014-09-04 01:25:47