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

Onde esta o erro no código do Herculano?

Herculano seguiu tudo o que foi apresentado no vídeo e jura de pé junto que entendeu cada detalhe. Contudo, ele não consegue enxergar onde errou no seu código. Aliás, isso pode acontecer com qualquer programador: ele sabe o que é correto fazer, mas na hora que digita, comete esse ou aquele erro

Código com erro:

<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) {

        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 x = 20; 

    function atualizaTela() {

        limpaTela();
        desenhaCirculo(x, 20, 10);
        x++;

    }

    setInterval(atualizaTela(), 10);

</script>
2 respostas

Herculano ao chamar a function atualizaTela dentro de setInterval acabou deixando a função com parênteses no final e isso causou um bug no programa.

A baixo segue o código corrigido:

<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) {

        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 x = 20; 

    function atualizaTela() {

        limpaTela();
        desenhaCirculo(x, 20, 10);
        x++;

    }

    setInterval(atualizaTela, 10);

</script>
solução!

Oi, Edson! Tudo bem?

Boa, é isso mesmo!

O correto é: setInterval(atualizaTela, 10);

Qualquer dúvida, estamos à disposição.

Bons estudos!