Solucionado (ver solución)
Solucionado
(ver solución)
5
respuestas

Solución Pelota que va y viene

Código que realiza la animación de rebotar.

<canvas width="600" height="400"></canvas>

<script>
  var pantalla = document.querySelector("canvas");
  var pincel = pantalla.getContext("2d");
  var x = 10;
  var direccionDerecha = true;

  pincel.fillStyle = "#D5D8DC";
  pincel.fillRect(0, 0, 600, 400);

  function disenarCirculo(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);
    pincel.fillStyle = "#D5D8DC";
    pincel.fillRect(0, 0, 600, 400);
  }

  function animacion() {
    if (direccionDerecha == true) {
      limpiarPantalla();
      disenarCirculo(x, 20, 10);
      if (x <= 590) {
        x++;
      } else {
        direccionDerecha = false;
      }
    }

    if (direccionDerecha == false) {
      limpiarPantalla();
      disenarCirculo(x, 20, 10);
      if (x >= 10) {
        x--;
      } else {
        direccionDerecha = true;
      }
    }
  }

  setInterval(animacion, 1);
</script>
5 respuestas

Hola, es que mi código no funcionaba y me guié por el suyo, me di cuenta que yo la variable que tu llamas dirección derecha, la estaba declarando dentro de la función que tu llamas animación, y entonces cuando hice el cambio y la declare fuera de la función si sirvió mi código,me podrías decir por favor la razón por la cual cuando declaro la variable dentro la función no sirve el código pero si la declaro fuera de la función si sirve? muchas gracias.

solución!

Hola Darling.

Eso ocurre porque todas las variables y constantes utilizadas dentro de una etiqueta <script> y de manera general; todas las variables declaradas en cualquier lenguaje de programación, tienen un alcance o ámbito.

El alcance o ámbito de la variable declarada, depende de donde fue declarada.

En nuestro caso si la declaras dentro de nuestra etiqueta <script>, esa variable declarada tendrá el alcance o ámbito en toda nuestra etiqueta <script>; es decir, toda sentencia, instrucción o función que este dentro de nuestra etiqueta tendrá acceso a nuestra variable (entiéndase alcance como quién y donde puede usar nuestra variable declarada).

Si la declaras dentro de una función, solo la función puede acceder a esta variable; una vez que nuestro programa sale de la función, no es capaz de reconocer esa variable declarada en esa función especifica.

Igual si declaras una variable dentro de un while o dentro de un for o de un if-else ; su alcance o ámbito solo será dentro de ese ciclo en particular y no estará disponible para las demás funciones, ciclos o procedimientos de tu código.

interesante... crei que solo llamando un if se podia hacer el proceso pero ahora que veo tu codigo entiendo porque mi codigo solamente direcciona hacia un lado Gracias por compartir ;D

Muchas gracias por compartir el resultado, tenia un problema similar al de AG Baeza y lo pude resolver.

Muchísimas gracias por tu explicación, ahora entiendo mejor.