6
respostas

Não acho o erro.

Meu código não funciona. A cor permanece a padrão 'black'. Eu usei a seguinte lógica. Tirei a var x e y da função lidaComMovimentoDoMouse para elas serem acessadas pela function mudaCor que será a responsável por verificar se foi clicado ou não na paleta. No caso como o x e y é definido pelo evento.page eu não relacionei essa função a nenhum evento, pois já está recebendo as coordenadas pelo evento.page. NA function mudaCor eu coloquei condições para alterar o valor da var corATual.

O que está errado com o código?


    function lidaComMovimentoDoMouse(evento) {

        x = evento.pageX - tela.offsetLeft;
        y = evento.pageY - tela.offsetTop;

        if(desenha) {

            desenhaCirculo(x, y, 5, corAtual);
        }
    }

    function habilitaDesenhar() {

        desenha = true;
    }

    function desabilitaDesenhar() {

        desenha = false;
    }

    function mudaCor(){
        if (x > 0 && x < 50 && y <= 50){
            corAtual = 'red';
        }

        if (x > 50 && x < 100 && y <= 50){
            corAtual = 'green';
        }
        if (x > 100 && x <= 150 && y <= 50){
            corAtual = 'blue';
        }

    }

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

    var desenha = false;
    var corAtual = 'black';
    var xVermelho = 0;
    var xVerde  = 50;
    var xAzul = 100;
    var yQuadrados = 0;
    var tamanhoQuadrados = 50;
    var x;
    var y;


    desenhaPaletaDeCores(); // mostra os quadrados de seleção de cores

    tela.onmousemove = lidaComMovimentoDoMouse;

    tela.onmousedown = habilitaDesenhar;

    tela.onmouseup = desabilitaDesenhar;
6 respostas

Achei o erro hahahahahah Eu esqueci de chamar a função, no caso agora já coloquei ela dentro da função habilita desenhar. Agora está funcionando. MASSSS a função de proteger a paleta não. Eu fiz essa função para desabilitar o desenhar quando as coordenadas forem as mesmas da paleta. Mas eu não sei onde chama-la, chamei na função habilitaDesenhar, mas não funciona.

   function protegePaleta(){
        if (x >=0 && x < 600 && y < 50){
            desenha = false;
        }
    }

Jhemili, boa tarde!

Hehe acontece, que bom que você conseguiu resolver, não se esqueça de marcar como solucionada, para ajudar outros alunos que estão com o mesmo problema!

Bons estudos!

Felipe, agora deu erro na hora de proteger a paleta hahahah Se vc puder dar uma olhadinha eu agradeço.

Oi Jhemili tudo bem?

Poderia postar todo o código do arquivo html por gentileza.

Eu fiz a função protegePaleta, mas eu não sei onde eu devo chama-la.

function lidaComMovimentoDoMouse(evento) {

        x = evento.pageX - tela.offsetLeft;
        y = evento.pageY - tela.offsetTop;

        if(desenha) {

            desenhaCirculo(x, y, raio, corAtual);
        }

    }

    function habilitaDesenhar() {

        mudaCor();
        desenha = true;
    }

    function desabilitaDesenhar() {

        desenha = false;
    }

    function protegePaleta(){
        if (x >=0 && x < 600 && y < 50){
            desenha = false;
        }
    }


    function mudaCor(){
        if (y < 50){
            if (x >= 0 && x < 50){
            corAtual = 'red';
            }

            if (x >= 50 && x < 100){
                corAtual = 'green';
            }
            if (x >= 100 && x < 150){
                corAtual = 'blue';
            }

            if (x >= 150 && x < 200){
                corAtual = 'yellow'

            }
            if (x >= 200 && x < 250){
                corAtual = 'pink'

            }

        }



    }


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

    var desenha = false;
    var raio = 5;
    var corAtual = 'black';
    var xVermelho = 0;
    var xVerde  = 50;
    var xAzul = 100;
    var xAmarelo = 150
    var xRosa = 200
    var yQuadrados = 0;
    var tamanhoQuadrados = 50;
    var x;
    var y;




    desenhaPaletaDeCores(); // mostra os quadrados de seleção de cores

    tela.onmousemove = lidaComMovimentoDoMouse;

    tela.onmousedown = habilitaDesenhar;

    tela.onmouseup = desabilitaDesenhar;



</script>

Eu fiz assim, não sei bem onde encaixar também a função protegePaleta então joguei um if dentro da função que desenha para não desenhar na área da paleta. E funcionou. Embora eu não tenha a função de desenharPaleta porque não tava no código que me passou. Dá uma olhadinha.

<canvas height="1000px" width="1000px"></canvas>
<script>
    function lidaComMovimentoDoMouse(evento) {

        x = evento.pageX - tela.offsetLeft;
        y = evento.pageY - tela.offsetTop;

        if (desenha) {

            desenhaCirculo(x, y, raio, corAtual);
        }

    }

    function habilitaDesenhar() {

        mudaCor();
        desenha = true;
    }

    function desabilitaDesenhar() {

        desenha = false;

    }

    function protegePaleta() {
        if (x >= 0 && x < 600 && y < 50) {
            desenha = false;
        }
    }


    function mudaCor() {
        if (y < 50) {
            if (x >= 0 && x < 50) {
                corAtual = 'red';
            }

            if (x >= 50 && x < 100) {
                corAtual = 'green';
            }
            if (x >= 100 && x < 150) {
                corAtual = 'blue';
            }

            if (x >= 150 && x < 200) {
                corAtual = 'yellow'

            }
            if (x >= 200 && x < 250) {
                corAtual = 'pink'

            }

        }



    }


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

    var desenha = false;
    var raio = 5;
    var corAtual = 'black';
    var xVermelho = 0;
    var xVerde = 50;
    var xAzul = 100;
    var xAmarelo = 150
    var xRosa = 200
    var yQuadrados = 0;
    var tamanhoQuadrados = 50;
    var x;
    var y;

    function desenhaCirculo(x, y, raio, cor) {
        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, 2 * 3.14);
        if (x >= 0 && x < 600 && y < 50) {
            desenha = false;
        } else {
        pincel.fill();
        }
    }


    //desenhaPaletaDeCores(); // mostra os quadrados de seleção de cores

    tela.onmousemove = lidaComMovimentoDoMouse;

    tela.onmousedown = habilitaDesenhar;

    tela.onmouseup = desabilitaDesenhar;



</script>