Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Coração Pulsante!

Eu não faço ideia de como poderia ter feito um coração, mas acho que dá pro gasto haha.

<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);
    var raio = 20; // máximo de 50
    var sentido = 1;

    function resetaTela() { // desenha um novo canvas em cima do anterior, para apagar a bolinha feita anteriormente.

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

    }     

    function desenhaCoração(x, y, raio) { // desenha um círculo, que receberá suas dimensões mais tarde.

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

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

        pincel.fillStyle = "red";
        pincel.beginPath();
        pincel.arc(x,y+30,raio,1.5,2 * Math.PI);
        pincel.fill();

        pincel.fillStyle = "lightgray";
        pincel.beginPath();
        pincel.arc(x,y+30.5,raio,1.5,1 * Math.PI);
        pincel.fill();

    }

    function coraçãoPulsante() { // chama as duas funções anteriores: criando um novo coração, incrementando a variável raio, para que a o próximo coração seja desenhado em cima e criando um “novo canvas” em cima do anterior, apagando, assim o coração feito anteriormente. 


        resetaTela();

        if (raio > 50) { // testa se o coração chegou ao tamanho máximo. Caso tenha chegado, altera o valor de "sentido", para fazê-lo retrair.

            sentido = -1;

        } else if (raio < 20) { // testa se o coração chegou ao tamanho mínimo. Caso tenha chegado, altera o valor de "sentido", para fazê-lo expandir.

            sentido = 1

        }


        desenhaCoração(300,200,raio);

        raio = raio + sentido; // incrementa e decrementa o valor do raio, dando a alusão da pulsação.
    }


    setInterval(coraçãoPulsante,15); // define que a função "coraçãoPulsante" será chamada a cada x milissegundos, e é somente assim que a ilusão de pulsação é reproduzida.

</script>
1 resposta
solução!

Oi Gabriel

Muito criativo! Parabéns pelo empenho nos estudos!

Continue praticando e qualquer dúvida pode contar com a gente.