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

não consigo entender porque meu código não funcionou

<meta charset="utf-8">

<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();

        if (x = 20) {

            var ir = true;

        } if (x = 500) {

            var ir = false;

    }

    }

    function limpaTela() {

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

    }

    var x = 20;
    var ir = true;



    function atualizaTela() {

        limpaTela();

        desenhaCirculo(x, 20, 10);
        if (ir == true) {

            x++;

        } if (ir == false) {

            x--;

        }

    }

    setInterval(atualizaTela, 10);

</script>
1 resposta
solução!

Olá Nayara, tudo bem com você?

Antes de mais nada queria te parabenizar por usar uma lógica diferente da do instrutor :)

Você cometeu apenas 2 errinhos bem simples, veja:

  1. Igualdade x Atribuição
if (x = 20) {

Lembre-se que quando utilizamos apenas um sinal de igual, estamos fazendo uma atribuição, o que queremos na verdade é fazer uma comparação e dessa forma precisamos utilizar o == para ter um valor booleano ( true ou false)

  1. Escopo de Variáveis

Nesse mesmo trecho de código, estamos fazendo ou:

var ir = true
var ir = false

Mas quando fazemos isso, não estamos pegando aquela variável que criamos no começo do programa, na verdade estamos criando uma nova que irá desparecer quando a função terminar de executar :)

O que queremos na verdade é mudar o valor de uma variável já existente, e dessa forma não precisamos delcarar novamente com var, podemos simplesmente dizer:

if (x == 20) {
    ir = true;
} if (x = 500) {
     ir = false;
}

Dessa forma agora o código tem realmente o sentido de: "Se x for igual a 20, mude o valor da variável ir para verdadeiro"

Conseguiu Compreender?

Abraços e Bons Estudos =D