1
resposta

Minha Solução - Bolinha Pulsando

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

<script>

    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 600, 400);

    function desenhaCirculo(x, y, raio, cor) {

        pincel.fillStyle = 'blue';
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * Math.PI);
        pincel.fill();
    }

    function limpaTela() {

        pincel.clearRect(0, 0, 600, 400);
    }

    var raio = 20;
    var pulsa = 1;

    function atualizaTela() {

        limpaTela();

        if(raio == 20) {

            pulsa = 1;

        }else if(raio == 30) {

            pulsa = -1;
        }

        desenhaCirculo(300, 200, raio);
        raio = raio + pulsa

    }

    setInterval(atualizaTela, 20);

</script>

Talvez não a melhor solução, mas deu certo!

1 resposta

Olá, Juliano. O que importa é chegar a uma solução pra quem está aprendendo. A minha solução ficou assim:

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

<script>

    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'white';
    pincel.fillRect(0, 0, 600, 400);

    function desenhaCirculo(x, y, raio, cor) {

        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * Math.PI);
        pincel.fill();
    }

    function limpaTela() {

        pincel.clearRect(0, 0, 600, 400);
    }
  var raio = 20;
  var incrementa = 0;
  var cor = 'blue';
  function atualizaTela() {

          limpaTela();
          if (raio <= 20) {
            incrementa++;            
          } else if (raio >= 30){
            incrementa--;
          } 
          desenhaCirculo(300, 200, raio, cor);
          raio = raio + incrementa;
  }  
  setInterval(atualizaTela, 20);
</script>

E roda perfeitamente, como a sua solução. Parabéns!