Buen día Team, este código en particular se me complico. Fue dificil abstraer que el setInterval ya es de antemano un while, pero al final quedó, Saludos. :)
<canvas width="600" height="400"></canvas>
<script>
var pantalla = document.querySelector("canvas");
var pincel = pantalla.getContext("2d");
pincel.fillStyle= "lightgrey";
pincel.fillRect(0,0,600,400);
//Función para diseñar un circulo.
function disenharCircunferencia(x,y,radio){
pincel.fillStyle = "blue";
pincel.beginPath();
pincel.arc(x,y,radio,0,2*Math.PI)
pincel.fill();
}
function limpiarPantalla(){
pincel.clearRect(0,0,600,400);
}
var x =10;
var derecha = true; //identificador de carrera derecha o izquierda
function actualizarPantalla(){
//if/else para ir a la izquierda o derecha dependiendo el identificador de carrera
if(derecha){
limpiarPantalla();
disenharCircunferencia(x,20,10);
x++;
//If para identificar el final de carrera y cambiar el identificador
if(x==590){
derecha = false;
}
} else {
limpiarPantalla();
disenharCircunferencia(x,20,10);
x = x-1;
//If para identificar el final de carrera y cambiar el identificador
if(x==10){
derecha = true;
}
}
}
setInterval(actualizarPantalla,5)
</script>