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

Fiz utilizando while

A lógica é boa? Está correta?

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

<script>

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

    pincel.fillStyle = "gray";
    pincel.fillRect(0,0,600,400);

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

    var raio = 10;

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


        while(raio <= 40){
            if(evento.shiftKey){
                raio = raio + 10;
            }
            break;
        }

         while(raio >= 10){
            if(evento.altKey){
                 raio = raio - 5;
            }
            break;
        }

            pincel.fillStyle = "blue";
            pincel.beginPath();
            pincel.arc(x, y, raio, 0, 2*3.14);
            pincel.fill();

        console.log("Posição do clique: " + x + ", " + y);
    }

    tela.onclick = desenhaCirculo;
1 resposta
solução!

Boa noite Olympio, usar o while não é uma boa escolha nesse caso, pois você não vai ficar executando o incremento / decremento do raio por várias vezes até atender a condição do while.

Você pode usar um if e até mesmo adicionar uma condição ao if já existente:

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

            if (evento.altKey && raio > 5){
                raio = raio - 5;
            }

Ou seja, será verificado se está sendo pressionada a tecla Shift e se o raio é menor que 40, se atender essas duas condições ai sim será incrementado 10 ao tamanho do raio, da mesma forma acontece se tiver pressionada a tecla Alt e o tamanho for mais que 5 para diminuir o raio.

Espero ter ajudado.