1
resposta

Duvida do exercio

Ola pessoal o meu codigo não esta a funcionar

<canvas width="600" height="400"></canvas>
<script>
tela= document.querySelector('canvas');
pencil= tela.getContext('2d');
pencil.fillStyle='grey';
pencil.fillRect(0,0,600,400);
function desenhaCirculo(evento){
var x=evento.pageX-tela.offsetLefet;
var y= evento.pageY-tela.offsetTop;


if(evento.shiftKey){
    pencil.arc(x, y , 30, 0, 2*3.14);
}
    else{
    pencil.arc(x, y, 10, 0, 2*3.14);
    }
    pencil.fill();
    console.log(x+ ','+y);

}
tela.onclick=desenhaCirculo;
</script>
1 resposta

Boa tarde. Veja que já um erro de digitação aqui:

var x=evento.pageX-tela.offsetLefet;

O correto é offsetLeft. Também não vi a instrução pencil.beginPath(); no trecho de código compartilhado. Ela é importante para poder desenhar o círculo.

Outro ponto é que o raio deve incrementar de 10 em 10, na sua solução você já leva em consideração dois tamanhos.

Veja um exemplo de solução a seguir:

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

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

        if (evento.shiftKey) {

           raio = raio + 20; // raio agora passa a valer 30!
        }

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

    }

    tela.onclick = desenhaCirculo;

</script>

Quando o shifit é pressionado, o valor do raio é incrementado.