Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Trocando de cor. Modificando o problema e um pouco sobre escopo de variáveis.

Resolvendo este problema me veio a ideia de tentar modicá-lo. E se eu quisesse mudar a cor dele apenas depois de já ter desenhado na tela? Para isso meu raciocínio foi que ao clicar com o botão direito, eu teria que sobrescrever o circulo criado com uma cor diferente. Para isso precisei de alguma forma capturar as coordenadas x e y, e repeti-las dentro da função do botão direito. No entanto para fazer isso tive que mudar a forma de declarar as variáveis x e y, tirando o var e fazendo com que fossem variáveis globais, ficou assim:

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

<script>

    var tela = document.querySelector('canvas')
    var pincel = tela.getContext('2d')

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

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

    function desenhaCirculo(evento){
        x = evento.pageX;
        y = evento.pageY;

        pincel.fillStyle = 'blue';
        pincel.beginPath();
        pincel.arc(x,y,10,0,2*3.14);
        pincel.fill();
        console.log(x + ',' + y)
    }

    tela.onclick = desenhaCirculo;


    function mudaCor() {

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

        pincel.fillStyle = cores[indiceCorAtual];
        pincel.beginPath();
        pincel.arc(x,y,10,0,2*3.14);
        indiceCorAtual ++
        pincel.fill();

        return false;
    }

    tela.oncontextmenu = mudaCor;

</script>

Está satisfatório dessa forma, mesmo tendo que declaras variáveis globais dentro da função?

2 respostas
solução!

Fala, Guilherme!!! Tudo bem contigo?

Ficou bacana, hein!!!

Quando rodei, o fato de guardar em variáveis globais, que faz com que a cor permaneça e altere após o desenho.

Ficou bacana, mesmo!

Isso é uma outra forma que não foge da ideia não.

Parabéns!!!

Continue sempre assim!!!!

Um abraço e bons estudos!!!

Obrigado Cássio,

Eu sempre tento modificar os problemas propostos, tentando fazer algo diferente ou incluir algo a mais, acho uma boa forma de praticar.

Um abraço!!