我知道这是可能的,但我似乎无法弄清楚。在其基本形式中,我有一个画布圆,每个键事件移动5像素,但这似乎触发得比较慢,而且非常跳跃,当更改键或从快速按键切换到按下时它会停顿。
那么,有人能告诉我一种不卡顿的方法吗?
谢谢。
我知道这是可能的,但我似乎无法弄清楚。在其基本形式中,我有一个画布圆,每个键事件移动5像素,但这似乎触发得比较慢,而且非常跳跃,当更改键或从快速按键切换到按下时它会停顿。
那么,有人能告诉我一种不卡顿的方法吗?
谢谢。
你想要做的是在 keydown
和 keyup
上设置变量为 true 或 false,然后每个刻度检查一次。可以像这样实现:
var tickRate = 30,
keyDown = {},
keyMap = {
37: 'left',
38: 'up',
39: 'right',
40: 'down'
};
$('body').keydown(function(e){ keyDown[keyMap[e.which]] = true; });
$('body').keyup(function(e){ keyDown[keyMap[e.which]] = false; });
var tick = function() {
if (keyDown['up']) {
// up code
} else if (keyDown['down']) {
// down code
} else if (keyDown['left']) {
// left code
} else if (keyDown['right']) {
// right code
}
// other code
setTimeout(tick, tickRate);
};
tick();