2
respostas

não consigo trocar a cor

var indiceCorAtual = 0;
var cores = ['blue', 'red', 'green']
    function pinta(evento){





        var x= evento.pageX -tela.offsetLeft;
        var y= evento.pageY -tela.offsetTop;
        pincel.fillStyle = cores[indiceCorAtual];
        pincel.beginPath();
        pincel.arc(x , y , ram() , 0 , 2*Math.PI)
        pincel.fill();
        console.log(x+   ','   +y);
        //tela.onclick = pinta
    }

    tela.onclick = pinta
/*
     function mudaCor() {

        indiceCorAtual++

        if(indiceCorAtual >= cores.length) {
            indiceCorAtual = 0; 
        }

        return false; 
    }
*/
tentei usar aqui um jeito diferente de mudar a cor,mas também não deu certo
    function mudaCor() {

            if (cores == 2) {
                cores = 0;
            } else {
                cores++
            }
            return false;
        }
    tela.oncontextmenu = mudaCor;
2 respostas

Boa tarde. Eu copiei seu código e rodei, usando a função mudaCor() que está comentada. A unica coisa que estava dando erro era na criação do arco, ao definir o RAIO, voce colocou ram(). Eu troquei isso por 10, e funcionou perfeitamente.

AQUI TÁ TEU CODIGO CORRIGIDO

<canvas width="600" height="400"></canvas>

<script>
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

    pincel.fillStyle = 'grey';
    pincel.fillRect(0, 0, 600, 400);

    var indiceCorAtual = 0;
    var cores = ['blue', 'red', 'green']

    function pinta(evento){

        var x= evento.pageX -tela.offsetLeft;
        var y= evento.pageY -tela.offsetTop;
        pincel.fillStyle = cores[indiceCorAtual];
        pincel.beginPath();
        pincel.arc(x , y , 10 , 0 , 2*Math.PI) //No lugar do ram() coloquei o tamanho do círculo, estava dando erro
        pincel.fill();
        console.log(x+   ','   +y);

    }

    tela.onclick = pinta
/*
     function mudaCor() {

        indiceCorAtual++

        if(indiceCorAtual >= cores.length) {
            indiceCorAtual = 0; 
        }

        return false; 
    }
*/
//tentei usar aqui um jeito diferente de mudar a cor,mas também não deu certo (isso tava dando erro tem que comentar com "//")
    function mudaCor() {

            if (indiceCorAtual == 2) { //o incremento tem que ser no indiceCorAtual
                indiceCorAtual = 0;
            } else {
                indiceCorAtual++
            }
            return false;
        }
    tela.oncontextmenu = mudaCor;

</script>

Pense o seguinte, o indiceCorAtual é como um armário organizado e separado por gavetas... ele vai colocar as cores na ordem que você anunciou no array:

gaveta (posição) 0 - blue

gaveta (posição) 1 - red

gaveta (posição) 2 - green

na primeira rotação ele vai pegar o item na gaveta 0 e colocar no local, recebe um incremento "++", devolve o da gaveta 0 e vai para a gaveta 1, recebe mais um incremento e vai para a gaveta 2, quando ele vê que não há gaveta 3, ele toma o prenuncio que indiceCorAtual 3 não existe "é falso", retorna para o início... indiceCorAtual = 0...

e pra trocar a cor você tem que usar o BOTÃO DIREITO DO MOUSE - que é o BOTÃO DE MENUs

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software