Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Por que a bolinha nao cresce

Bom dia,

testei uma ordem diferente, colocando a condição após o desenho da bolinha e antes de chamar o comando, mas a bolinha não cresce. Segue este codigo

<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 desenhaCirculo(evento) {

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

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

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

    tela.onclick = desenhaCirculo;

</script>

Já quando coloco a condição antes do desenho, ela cresce. Por que isto ocorre?

<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 desenhaCirculo(evento) {

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

        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>
3 respostas

Luan, bom dia!

Isso ocorre porque ao colocar fora da função ele só é executado uma vez, que seria o momento de carregamento da tela, depois aquele if fica inutilizado.

Ele precisa estar dentro da função pois ele deve ser verificado a cada click na tela e não apenas uma vez

Espero ter ajudado e bons estudos!

Mas a unica mudança que eu fiz foi a ordem do pincel azul. Em ambos os casos o raio está descrito de fora da função. Apenas o if veio antes (a que deu errado) ou depois (a que deu certo). Eu consegui realizar o exercício, mas não entendi o motivo desta ordem importar.

solução!

Luan, no primeiro caso, o if está fora da function, por isso está dando errado, mas ainda assim, mesmo que você coloque o if dentro da função mas depois do pincel.fill(); não funcionaria, porque você estaria desenhando primeiro antes de aumentar o tamanho da bolinha