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

[Dúvida] Duvida na escrita do código

gostaria de entender a necessidade de colocar a var desenha recebendo o false logo no inicio do código? A uns exercicios atrás, realizei a terafa sem este var recebendo o o valor de false e o código funcionou corretamente conforme esperado.

<canvas width="600" height="400"></canvas>
selecione a cor <input type="color">

<script>
  var paleta = document.querySelector('input');
  var tela = document.querySelector('canvas');
  var pincel = tela.getContext('2d');
  pincel.fillStyle = 'grey';
  pincel.fillRect(0, 0, 600, 400);
  var desenha = false;

  function desenhaCirculo(evento) {
    if (desenha) {
      var x = evento.pageX - tela.offsetLeft;
      var y = evento.pageY - tela.offsetTop;
      pincel.fillStyle = paleta.value; // sempre pega o valor atual da paleta!
      pincel.beginPath();
      pincel.arc(x, y, 10, 0, 2 * 3.14);
      pincel.fill();
    }
    console.log(x + ',' + y);
  }
  tela.onmousemove = desenhaCirculo;
  // atribuindo diretamente a função anônima
  tela.onmousedown = function() {
    desenha = true;
  }
  // atribuindo diretamente a função anônima
  tela.onmouseup = function() {
    desenha = false;
  }
</script>
1 resposta
solução!

quando uma variável é escrita, ela automaticamente é colocada como true, nesse caso o if é chamado antes dos comandos do mouse e se não for declarada como false, o if vai funcionar de cara