1
resposta

Goste do input, porem tenho uma duvida

Não sabia que o input= color era a paleta de cores. A duvida é o seguinte por quê não daria certo utilizamos as funções anônimas? , segue abaixo: tela.onmousemove = desenhaCirculo; tela.onmousedown = function() { desenha = true; } tela.onmouseup = function() { desenha = false; }

<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

Olá!

Isso funciona sim. Você pode inclusive usar função anônima no onmousemove.

PS.: Sugiro usar as variáveis x e y fora da condição.

function desenhaCirculo(evento) {
    var x = evento.pageX - tela.offsetLeft;
    var y = evento.pageY - tela.offsetTop;
    if(desenha) {
        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);
}