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

Qual foi o problema com a minha lógica?

Olá, Boa Noite!

Dentro desse exercício não consegui compreender porquê o meu código não funcionou... ele sempre exibe o círculo com o raio maior, mesmo quando não estou pressionando o Shift.

Mas segundo o comando passado, o evento.shiftKey responde somente em duas opções: true ou false... A lógica para mim parece muito simples: em criar um If, para o caso de ser true... onde peço para ele imprimir o circulo maior... E um else, para caso não esteja pressionado, imprimir o círculo menor.

Alguém pode me auxiliar em dizer aonde estou errando?

<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;
    pincel.fillStyle = 'blue';
        pincel.beginPath();
        console.log(x + ',' + y);

            if(evento.shiftKey = true) {

                pincel.arc(x, y, 30, 0, 2 * 3.14);
                pincel.fill();
            } else {
                pincel.arc(x, y, 10, 0, 2 * 3.14);
                pincel.fill();  
            }
    }

    tela.onclick = desenhaCirculo;

</script>
3 respostas
solução!

Cauã,

é simples:

você utilizou a atribuição de valor (=) no lugar da comparação (==).

Altere o == para == que vai funcionar.

if(evento.shiftKey == true) {

O restante está certinho.

Bons estudos!

Poxa, eu estava ficando maluco aqui e era só um problema de sintaxe.

Eu confundo porque ao atribuir valor fora dessas funcionalidades, usamos apenas "=", em variáveis e etc.

Mas usando dentro de If ou funções, é preciso usar "==" e acabo confundindo.

Muito obrigado pela ajuda!!

Cauã, de nada.

Mas na verdade são usos diferentes. Para atribuir/armazenar é = mesmo.

Para comparar em if, while, for, etc. Comparar é ==.

Bons estudos.