1
resposta

É possível utilizar "while" para aumentar o raio? Tentei dessa forma e não consegui


<script>

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

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

    var cores = ['blue', 'red', 'green']
    var indiceCorAtual = 0; // começa com blue
    var raio = 10;

    function desenhaCirculo(evento) {

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY- tela.offsetTop;
        console.log( x +"," + y);
    while (evento.shiftKey) {

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

    }

    }



tela.onclick = desenhaCirculo; // sem parentese para evitar execução imediata da função ao abrir a pagina 

function mudaCor() {

    indiceCorAtual++;

if(indiceCorAtual >= cores.length) {
indiceCorAtual = 0; // volta para a primeira cor (azul)
}

return false; // para não exibir o menu padrão do canvas
}

tela.oncontextmenu = mudaCor;

</script>

1 resposta

Ultilizei o condicional "for" por achar mais pratico e facil, por algum motivo para que a bola cresça ate explodir como o exercicio pede a variavel raio e consequentemente o "for" deve estar fora da função desenhaCirculo(evento). Desta forma meu codigo ficou assim:

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

    for (var raio = 10; raio <= 10 ; raio++) {


    function desenhaCirculo(evento) {

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;

        console.log(x + ',' + y);

            if (evento.shiftKey) {

               raio = raio + 10;
            }

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

    }
}

    tela.onclick = desenhaCirculo;

</script>