2
respostas

Funcionamento do código

Olá, bom dia, tudo bem?

Segue o meu código da bolinha pulsante. Eu fiz assim, porém tenho uma dúvida. Quando eu tiro a parte do código "desenhaCirculo(x, 20, 10); x++;" Ele funciona, a minha pergunta é, porque eu não posso incluir esse código?

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

<script>

    var tela = document.querySelector("canvas");
    var pincel = tela.getContext("2d"); 
    pincel.fillStyle = "lightgrey"; 
    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 bolinha = 20; 

    var pulso = 1; 

    function atualizaTela() {

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

        if(bolinha < 20) {
            pulso = 1;
        }

        if(bolinha > 30) {
            pulso = -1; 
        }

        desenhaCirculo(250, 150, bolinha, "blue");
        bolinha = bolinha + pulso; 
    }

    setInterval(atualizaTela, 20); 

</script>
2 respostas

Boa noite Jessica, tudo certo?

Isso acontece pois não existe no seu código uma variável chamada x. Existe um valor x no seu código, mas ele é um parâmetro da função desenhaCirculo.

Tente se fazer e responder a seguinte pergunta: qual seria o valor dentro de x na linha 30 do seu código? Como essa variável não foi declarada, o navegador vai e te retorna um erro.

Espero ter ajudado e bons estudos!

João está correto, mas apenas um detalhe para clarear o entendimento.

Quando você chama a função desenhaCirculo na linha 40 de seu código, voce está passando um valor diretamente para a função.

Quando você chama a mesma função na linha 30, o primeiro valor que na linha 40 voce passou como 250, está valendo X, e este "X" não está declarado como variavel em seu código :)

var x = 250

por exemplo :)

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