2
respostas

selecionarCor com array, não seleciona.

Fala, pessoal! Tranquilo?

Tentei chegar na solução de selecionar a cor utilizando array e não deu muito certo. A cor não muda. Alguém consegue ver o que tem de errado?

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

    var desenha = false;    
    var corAtual = ['blue', 'red', 'green']
    var xCores = [0, 50, 100]
    var yQuadrados = 0;
    var tamanhoQuadrados = 50;

    function desenhaQuadrado(x, y, tamanho, cor) {
        pincel.fillStyle = cor;
        pincel.fillRect(x, y, tamanho, tamanho)
        pincel.fill();
    }

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

    function desenhaPaletaDeCores() {
        desenhaQuadrado(xCores[0], yQuadrados, tamanhoQuadrados, corAtual[0]);
        desenhaQuadrado(xCores[1], yQuadrados, tamanhoQuadrados, corAtual[1]);
        desenhaQuadrado(xCores[2], yQuadrados, tamanhoQuadrados, corAtual[2]);
    }
//lidaComMovimentoDoMouse
tela.onmousemove = function(evento) {
        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;

        if(desenha && podeDesenhar(x,y)){
            desenhaCirculo(x, y, 5, corAtual[0]);
        }
    }

    function podeDesenhar(x,y){
        if (x > 0 && x < 3 * tamanhoQuadrados && y > 0 && y < tamanhoQuadrados){
            return false;
        } else {
            return true;
        }
    }
//selecionaCor
tela.onclick = function(evento){
        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        console.log(x,y)
        if (y > yQuadrados && y < yQuadrados + tamanhoQuadrados) {

            if (x > xCores[0] && x < xCores[0] + tamanhoQuadrados) {

                corAtual = [0];

            } else if (x > xCores[1] && x < xCores[1] + tamanhoQuadrados) {

                corAtual = [1];

            } else if (x > xCores[2] && x < xCores[2] + tamanhoQuadrados) {

                corAtual = [2];
            }
        }
    }
    tela.onmousedown = function(){
        desenha = true;
    }
    tela.onmouseup = function(){
        desenha = false;
    }
    desenhaPaletaDeCores();
</script>

Abraço!

2 respostas

Fala, Lucas! Tudo bem? Espero que sim!!!

Para mudarmos no código, basta alterarmos na função:

function desenhaPaletaDeCores() {
        desenhaQuadrado(xCores[0], yQuadrados, tamanhoQuadrados, corAtual[0]);
        desenhaQuadrado(xCores[1], yQuadrados, tamanhoQuadrados, corAtual[1]);
        desenhaQuadrado(xCores[2], yQuadrados, tamanhoQuadrados, corAtual[2]);
    }

Quando alterar dentro [0] por [1] e [1] por [0] e atualizar a página vai ocorrer a alteração das cores.

Agora se formos deixar esse processo mais interativo, temos que entrar com outros comandos, Lucas!

Faça essas alterações e nos retorne!

Bons estudos e vamos em frente!

Fala, Cássio. Tudo tranquilo?

Então, se eu altero o 'corAtual [0]' para '[1]', manualmente na função 'desenhaCirculo' do código, funciona bem e posso colocar a cor que eu quiser. O que não funciona é a seleção de cores ao clicar nos quadrados respectivos. Continua azul.

Não sei se segui suas instruções corretamente, mas nada mudou ainda...