我有以下代码通过带有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 ...)?
希望我已经清楚了! 感谢。
答案 0 :(得分:1)
跟踪变量中的位置并在每个按键上递减它(降低其值)。
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;
希望我理解正确。