我有以下代码通过setTimeouts在Sprite表中移动。
它可以正常工作,但是我想知道如何制作,因此如果我按“ 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 ...)?

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

最佳答案

跟踪变量中的位置,并在每次按键时递减(降低其值)。

    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>





希望我能正确理解你。

关于javascript - setTimeout键按下,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26078498/

10-12 13:50