Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Apareceu um problema!

Integrei os três exercícios num só, para que o programa permitisse as mudanças de cores e tamanhos além do desenho continuado com o mouse "clicado". No entanto quando adicionei a última parte ele altera o tamanho do raio de maneira a ir o máximo (40) e o mínimo (10) de uma vez só e não ir encrementando aos poucos. Qual o problema, não consegui visualizar? Segue o código:

<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 cor = ["blue", "red", "green"];
    var colorido = 0;
    var raio = 10;
    var desenha = false;

    function desenhaCirculo(evento) {

        if(desenha) {    
            var x = evento.pageX - tela.offsetLeft;
            var y = evento.pageY - tela.offsetTop;

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

        if(evento.shiftKey){
            raio = raio + 10;
            if(raio>40) {
                raio = 40;
            }
        }

        if(evento.altKey) {
            raio = raio - 5;
            if(raio<10) {
                raio = 10;
            }
        }

    }

    function mudaCor() {

        colorido++;
        if(colorido>= cor.length) {
            colorido = 0;
        }
        alert("Mudou para " + cor[colorido] + "!");

        return false;
    }

    tela.onmousemove = desenhaCirculo;
    tela.oncontextmenu = mudaCor;

    function habilitaDesenhar() {
        desenha = true;
    }

    function desabilitaDesenhar() {
        desenha = false;
    }

    tela.onmousedown = habilitaDesenhar;
    tela.onmouseup = desabilitaDesenhar;


</script>
1 resposta
solução!

Oi Leandro tudo bem? É que a gente clica no teclado e no momento que clicamos o navegador já executou diversas vezes a função. Porque nós pensamos em segundos, o computador pensa em milisegundos.

Para corrigir isso diminua o quanto soma ou subtrai a constante raio. Eu testei raio = raio + 1; para aumentar e raio = raio - 0.5; para diminuir e ficou belezinha para mim mas você pode ajustar para velocidade que quiser.

Espero ter ajudado!!!