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

Meu código não funciona e não entendo o porquê

O círculo simplesmente não aparece em nenhum tamanho. A única parte que o programa roda é o retângulo cinza no fundo.Não entendo o problema na minha lógica, se alguém puder me ajudar a entender, ficaria grata!

<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; 
            if(evento.shiftKey == true) { 

                    pincel.fillStyle = "blue";
                    pincel.beginPath();
                    pincel.arc(x, y, 30, 0, 2 * Math.PI);
                    pincel.fill();

                    } else { 
                        pincel.fillStyle = "blue";
                        pincel.beginPath();
                        pincel.arc(x, y, 10, 0, 2 * Math.PI);
                        pincel.fill(); 
            }

    }

    tela.onclick = desenhaCirculo; 
</script>
2 respostas
solução!

Oi Anna, Tudo Bem?

Espero que sim.

O problema de não funcionar é apenas uma letra que está minúscula e deveria estar maiúscula, acredita?

Esse é o trecho original do teu código, o 'pagey' deveria ser 'pageY'.

var y = evento.pagey - tela.offsetTop; 

Substitui por esse trecho abaixo e funcionará.

var y = evento.pageY - tela.offsetTop; 

Lendo o código eu também deixei passar... Consegui visualizar esse problema colocando um console.log dentro da função (fora do if) desenhaCirculo para expor o x e o y que foram capturados logo no começo da função.

No y me retornou NaN e aí já fui direto onde ele estava sendo capturado.

Espero ter ajudado.

Abraço.

Ei Eraldo, tudo bem sim! Po, brigadão pela ajuda!! Mudei a letra y pra maiúscula e o código funcionou perfeitamente. Acho mt bom as vezes que eu fico quebrando a cabeça pra entender o problema e quando vou ver, é só um erro de sintaxe haha!!