1
resposta

O meu está um pouco diferente, alguém poderia opinar sobre?

<canvas  width="600" height="400"></canvas>
    <script>
        function desenhaQuadrado(x,y,tamanho,cor) {
            brush.fillStyle = cor;
            brush.fillRect(x,y,tamanho,tamanho);
            brush.fill();
        }

        function desenhaCirculo(x,y, raio, cor) {
            brush.fillStyle = cor;
            brush.beginPath();
            brush.arc(x,y,raio,0,2*Math.PI);
            brush.fill();
        }

        function desenhaPaletaDeCores() {
            desenhaQuadrado(xVermelho, yQuadrado, tamanhoQuadrados, 'red');
            desenhaQuadrado(xVerde, yQuadrado, tamanhoQuadrados, 'green');
            desenhaQuadrado(xAzul, yQuadrado, tamanhoQuadrados, 'blue');
        }

        function lidaComMovimentoDoMouse(evento) {
            var x = evento.pageX - tela.offsetLeft;
            var y = evento.pageY - tela.offsetTop;
            if(desenha && podeDesenhar(x,y)){
                desenhaCirculo(x,y,5,corAtual[posicao]);
            }
        }

        function podeDesenhar(x,y) {
            if(x > 0 && x < (3*tamanhoQuadrados + 10) && y > 0 && y < (tamanhoQuadrados + 10)) {
                return false;
            } else{
                return true;
            }
        }

        function trocaCorBrush(evento) {
            var x = evento.pageX - tela.offsetLeft;
            var y = evento.pageY - tela.offsetTop;

            if((x > 0 )
                && (x < xVermelho + tamanhoQuadrados)
                &&(y > yQuadrado)
                &&(y < yQuadrado + tamanhoQuadrados)) {
                posicao = 1;
            }

            if((x > xVerde )
                && (x < xVerde + tamanhoQuadrados)
                &&(y > yQuadrado)
                &&(y < yQuadrado + tamanhoQuadrados)) {
                posicao = 2;
            }

            else if((x > xAzul )
                && (x < xAzul + tamanhoQuadrados)
                &&(y > yQuadrado)
                &&(y < yQuadrado + tamanhoQuadrados)) {
                posicao = 0;
            }

        }

        function habilitaDesenho() {
            desenha = true;
        }
        function desabilitaDesenho() {
            desenha = false;
        }

        var tela = document.querySelector('canvas');
        var brush = tela.getContext('2d');
        brush.fillStyle = 'lightgrey';
        brush.fillRect(0,0,600,400);

        var desenha = false;
        var corAtual = ['blue','red','green'];
        var posicao = 0;
        var xVermelho = 0;
        var xVerde = 50;
        var xAzul = 100;
        var yQuadrado = 0;
        var tamanhoQuadrados = 50;

        desenhaPaletaDeCores();

        tela.onmousemove = lidaComMovimentoDoMouse;
        tela.onmousedown = habilitaDesenho;
        tela.onmouseup = desabilitaDesenho;

        tela.onclick = trocaCorBrush;

    </script>
1 resposta

Diego,

não tem grandes diferenças com o código do professor, apenas talvez o 'if' em trocaCorBrush esteja implementado de forma mais sintética no exemplo do professor, e a sua escolha de cores definidas pelo índice.

Poderia usar a ordem do array de cores igual à ordem da paleta, pra facilitar.

Está correta e funcional.

Continue assim, e bons estudos.