Puedes hacerlo con un setInterval y con las funciones "keydown" y "keyup", que cuando el interval esté pausado, presiones la tecla que desees y lo ponga en movimiento y cuando la sueltes lo pause nuevamente, mira un ejemplo:
Código HTML:
Ver original<!doctype html>
window.onload = function() {
var rigthPress = false,
leftPress = false,
intervalVelocity = 200;
// Function to move divs
setInterval(function() {
if(rigthPress && !leftPress) {
// Mover div a la derecha
console.log('derecha')
}
if(leftPress && !rigthPress) {
// Mover div a la izquierda
console.log('izquierda')
}
}, intervalVelocity)
document.onkeydown = function(e) {
if(e.keyCode == 37) {
// activar movimiento a la izquierda
leftPress = true;
}
if(e.keyCode == 39) {
// activar movimiento a la derecha
rigthPress = true;
}
}
document.onkeyup = function(e) {
if(e.keyCode == 37) {
// desactivar movimiento a la izquierda
leftPress = false;
}
if(e.keyCode == 39) {
// desactivar movimiento a la derecha
rigthPress = false;
}
}
}