setTimeout键按下

时间:2014-09-27 19:43:06

标签: javascript jquery settimeout

我有以下代码通过带有setTimeouts的精灵表移动。 它工作正常但我想知道如何制作它,以便如果我按下" m"键,它将一次跳过一帧并停止(直到再次按下m),并且一旦没有帧,则该过程应该停止。

所以,如果我按m,第一帧就会通过,如果我再次按m,那么框架两遍等等......直到没有剩下的帧为止。

这是我的代码:

$(document).keyup(function(e) {          
        if (e.keyCode == 77) {  
            setTimeout(function () {
                object.css('background-position', '-32px -0px');
            setTimeout(function () {
                object.css('background-position', '-64px -0px');
            setTimeout(function () {
                object.css('background-position', '-96px -0px');
            setTimeout(function () {
                object.css('background-position', '-128px -0px');
             }, 600);
             }, 600);
             }, 600);
             }, 600);
        }
});

我认为摆脱setTimeouts可能会有效,但我是否只需要不断添加if(e.keyCode ...)?

希望我已经清楚了! 感谢。

1 个答案:

答案 0 :(得分:1)

跟踪变量中的位置并在每个按键上递减它(降低其值)。

& #13;

    var pos = 0;
    $(document).keyup(function(e) {         
        if (e.keyCode == 77) { 
            pos -= 32;
            alert(pos);
            object.css('background-position', pos+'px -0px');
        }
    });

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

希望我理解正确。