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

Por que meu código não funciona corretamente?

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


    evento.shiftKey=false;
    function desenhaCirculo(evento) {


        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        pincel.fillStyle = 'blue';
        pincel.beginPath();
        pincel.arc(x, y, 10, 0, 2 * 3.14);
        pincel.fill();
        console.log(x + ',' + y);


        if(evento.shiftKey == true){
        pincel.fillStyle = 'blue';
        pincel.beginPath();
        pincel.arc(x, y, 30, 0, 2 * 3.14);
        pincel.fill();
        console.log(x + ',' + y);


        }

    }


    tela.onclick = desenhaCirculo;

</script>
2 respostas

A linha

evento.shiftKey=false;

Deve ser colocada dentro da function:

function desenhaCirculo(evento) {
        evento.shiftKey=false;

A variável evento só existe dentro da function.

solução!

Olá Cláudio,

O problema está acontecendo devido à linha evento.shiftKey=false;, se você olha no console irá perceber que está aparecendo o erro Uncaught ReferenceError: evento is not defined, para solucionar o problema coloquei a linha para dentro da function que está mais abaixo, essa função está recebendo como variável o evento, por isso creio que é lá que o comando deve ficar

  pincel.fillRect(0, 0, 600, 400);


    function desenhaCirculo(evento) {

            evento.shiftKey=false;
        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        pincel.fillStyle = 'blue';
        pincel.beginPath();

Espero ter ajudado.