Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Minha condição if ao testar se x == 600 não está funcionando, alguém consegue me ajudar?

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

<script>

    var tela = document.querySelector("canvas"); //Criar tela
    var pincel = tela.getContext("2d"); //Criar um pincel 2d na tela
    pincel.fillStyle = "lightgrey";
    pincel.fillRect(0, 0, 600, 400);

    var x = 20;
    var y = 20;

    function desenhaCirculo(x, y) {

        pincel.fillStyle = "red";
        pincel.beginPath();
        pincel.arc(x, y, 10, 0, 2 * Math.PI);
        pincel.fill();
    }

    function limpaTela() {

        pincel.clearRect(0, 0, 600, 400);
        pincel.fillStyle = "lightgrey";
        pincel.fillRect(0, 0, 600, 400);
    }    

    function bolinhaPositiva() {

        limpaTela();
        desenhaCirculo(x, y);
        x++;
        testaX();
    }


    function bolinhaNegativa() {

        limpaTela();
        desenhaCirculo(x, y);
        x--;
        testaX();
    }

    function testaX() {

        if(x == 600) {

            direcao = true;
        }

            if(x == 20) {

            direcao = false;
        }
    }

    if(direcao) {

        setInterval(bolinhaNegativa, 20);

    }
        else {

            setInterval(bolinhaPositiva, 20);
        }

    var direcao;    

</script>
2 respostas

Fala, Matheus! Tudo bem contigo?

Veja que ao repetirmos o setIntervaldentro da função `testaX' a bolinha volta, mas o código fica um pouco estranho.

  function testaX() {

    if (x == 600) {

      direcao = true;
      setInterval(bolinhaNegativa, 20);
    }

    if (x == 20) {

      direcao = false;
      setInterval(bolinhaPositiva, 20);

    }
  }

  if (direcao) {

    setInterval(bolinhaNegativa, 20);

  } else {

    setInterval(bolinhaPositiva, 20);
  }

Fica o exercício para deixar esse código sem essa repetição ;-)

Talvez um for possa resolver ou deixar uma variável fora da função...

Poste aqui novamente para vermos, Matheus!!!

Um abraço!!!

solução!

Ainda não descobri o problema desse código Cássio Murilo, mas resolvi deixar ele um pouco, assim que descobrir o motivo de não ter dado certo eu posto aqui. Obrigado pela atenção.