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

Por que é preciso usar a função limpaTela() ?

Olá,

Estou realizando um dos exercícios no curso. O objetivo é criar um efeito pulsante na bola.

Em minha tentativa falha de resolução, eu deixei de utilizar a função clearRect(), a qual está atribuída na função criada limpaTela(). Para isso, utilizei o setInterval. Se a função limpaTela() não for utilizada, o efeito pulsante não funciona... A bolinha começa a crescer e para.

Por isso a minha dúvida é: Por que utilizar a função limpaTela() é essencial para o efeito pulsante?

Segue abaixo a resolução do professor:

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pulsa</title>
</head>
<body>
    <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 = 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 incremento = 1;

    function pulsaBolinha() {

        //em minha solução falha, não utilizei a função abaixo... Essa foi a única diferença.
        limpaTela();

        if (raio > 30) {

            incremento = -1;
        } else if (raio < 20) {
            incremento = 1;
        }

        raio = raio + incremento;
        desenhaCirculo(300, 200,  raio, "black");
    }

    setInterval(pulsaBolinha, 20);

</script>
</body>
</html>
1 resposta
solução!

Olá, Joab! Tudo bem?

Então, se utiliza a função limpaTela() para visualizar o movimento pulsante da bolinha. O movimento está acontecendo enquanto não utiliza a funçãolimpaTela() também. Não utilizando a função, é como se estivesse registrando todo movimento sem apagar, então como a bolinha está programada para manter o mesmo tamanho ao retrair e expandir, não é percepitível mudança e aparenta ser uma bolinha estática.

Espero ter ajudado :) !

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software