1
resposta

Desafio um pouco complexo, pelo menos para mim foi!

Pessoass.....

Segue o Código, Achei bem complexo a elaboração do código. Fiquei perdido mas acho que consegui.... Ficou parecido com o do professor!!!

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

<script>
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    var cores = ['blue','cyan','red','green','yellow','black','magenta', 'white'];
    var cor= 0;


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

    function desenhaCirculo(evento){  
    console.log(cor);        
        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;

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

    function mudaCor(evento){
            cor++;
            while(cor > cores.length-1){
            cor =0;
           }    
           return false;
    }          
            tela.onclick = desenhaCirculo;
            tela.oncontextmenu = mudaCor;  
</script>
1 resposta

Olá, Anderson!!! Tudo bem contigo?

Bacana você ter colocado mais cores! Legal mesmo!

Vamos dar uma clareada no código!

No início você estipulou o tamanho do seu canvas

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

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

No próximo passo foi a definição das cores e dizendo a posição da cor inicial dentro da array

    var cores = ['blue', 'cyan', 'red', 'green', 'yellow', 'black', 'magenta', 'white'];
    var cor = 0;

Agora temos a construção do fundo

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

Vamos desenhar o circulo. Recebemos o evento, consolemostra onde está cada cor e quantas bolinhas estão sendo clicadas e mostramos as posições de x e y guardadas na variável.

    function desenhaCirculo(evento) {
        console.log(cor);
        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;

continuando a função desenhaCirculo, recebemos a cor, começamos a desenhar no canvas o tamanho do circulo e preenchemos esse circulo com a cor que definimos.

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

Na função mudaCor recebemos o evento, e a cada iteração é somado a proxima cor e enquanto a cor for as que estão dentro da array guarde a cor na variável.

    function mudaCor(evento) {
        cor++;
        while (cor > cores.length - 1) {
            cor = 0;
        }
        return false;
    }

O retorno falso é para que continue com a mesma cor enquanto não for clicado o botão direito do mouse.

E por fim temos quem faz tudo isso funcionar ;-)

O clique para chamar a função desenhaCirculo e a mudança de cor.

    tela.onclick = desenhaCirculo;
    tela.oncontextmenu = mudaCor;  
</script>

Espero ter ajudado, Anderson!

Está no caminho certo!

Bons estudos e vamos em frente!