1
resposta

Resultado positivo com outra lógica , minha lógica está válida ?

Cheguei no resultado esperado, gostaria que verificassem se minha lógica foi válida.

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

    function desenhaBolinha(evento){

        var x = evento.x - tela.offsetLeft;
        var y = evento.y - tela.offsetTop;
        var shift = evento.shiftKey;

         pincel.fillStyle = cores[indiceCorAtual];

        if(shift == true){
            pincel.beginPath();
            pincel.arc(x, y, 10 , 0 , 2 * 3.14);
            pincel.fill();

        }if(shift == false){
            pincel.beginPath();
            pincel.arc(x, y, 30 , 0 , 2 * 3.14);
            pincel.fill();
        }
    }

    tela.onclick = desenhaBolinha;


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


         function mudaCor() {

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

                }
              return false;
        }

    tela.oncontextmenu = mudaCor;

</script>
1 resposta

Boa noite, Kleber! Como vai?

No sertão da programação é muito comum que um problema tenha diversas soluções! Então se a sua solução resolveu a questão é seguir em frente rumo à luz do conhecimento!

Só um detalhe em relação ao seu código! O trecho

if(shift == true){
     pincel.beginPath();
     pincel.arc(x, y, 10 , 0 , 2 * 3.14);
     pincel.fill();
}if(shift == false){
     pincel.beginPath();
     pincel.arc(x, y, 30 , 0 , 2 * 3.14);
     pincel.fill();
}

seria melhor escrito assim

if(shift){
     pincel.beginPath();
     pincel.arc(x, y, 10 , 0 , 2 * 3.14);
     pincel.fill();
} else {
     pincel.beginPath();
     pincel.arc(x, y, 30 , 0 , 2 * 3.14);
     pincel.fill();
}

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!