我有以下代码通过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/