JSFiddle - React, Tailwind, and code Playground
HTML
<div id="platform">
</div>
CSS
#platform {
width: 10px;
height: 10px;
position: absolute;
left: 400px;
top: 400px;
background-color: green;
}
JavaScript
const platform = document.getElementById("platform");
let isPlatformMoving = false;
let platformMovingDirection;
document.addEventListener("keydown", ()=>{
const keyCode = event.keyCode;
if (keyCode === 37) {
console.log(platformMovingDirection);
if(platformMovingDirection === "left"){
return;
} else if(platformMovingDirection === "right") {
clearInterval(isPlatformMoving);
}
platformMovingDirection = "left";
isPlatformMoving = setInterval(movePlatform, 0);
return;
} else if (keyCode === 39) {
console.log(platformMovingDirection);
if(platformMovingDirection === "right"){
return;
} else if(platformMovingDirection === "left") {
clearInterval(isPlatformMoving);
}
platformMovingDirection = "right";
isPlatformMoving = setInterval(movePlatform, 0);
return;
}
});
document.addEventListener("keyup", ()=> {
const keyCode = event.keyCode;
if (isPlatformMoving && ((keyCode === 39 && platformMovingDirection === "right") || (keyCode === 37 && platformMovingDirection === "left"))) {
clearInterval(isPlatformMoving);
isPlatformMoving = false;
platformMovingDirection = undefined;
}
});
function movePlatform() {
const position = parseFloat(getComputedStyle(platform).getPropertyValue("left"));
if(platformMovingDirection === "left") {
platform.style.left = ( position - 1 ) + "px";
} else if(platformMovingDirection === "right") {
platform.style.left = ( position + 1 ) + "px";
}
}