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

Resposta ao exercício

Fiz assim, enquanto SHIFT está pressionado, a bolinha fica no tamanho 20. Se parar de pressionar volta para o 10. Acho que está certo. (!?) kkkkkkk

<canvas width="600" height="400"></canvas>

<script>


    var tela = document.querySelector('canvas');

    var pincel = tela.getContext('2d');

    pincel.fillStyle = "black";

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


    var cores = ['aqua', 'blue', 'fuchsia', 'grey', 'green', 'lime', 'white', 'yellow']; 
    var i = 0;    
    var size = 0;            

    function desenhaCirculo(evento) {

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

            if (evento.shiftKey==true) {

        size = 20;

        } else if (evento.shiftKey==false) {

        size = 10;

        }

    }

    tela.onclick = desenhaCirculo;    

    function mudaCor(evento) {

        i++;                    

        if (i>=cores.length)   {    

        i = 0;

        }

        return false;
    }

    tela.oncontextmenu = mudaCor;


</script>
3 respostas

Agora que vi a solução do professor, e é pra bola ser acrescida de mais 20 sempre que o SHIFT estiver pressionado, então eu alteraria "size = 20 "para o "size = size + 20". =]

solução!

Oi Anna, tudo bem?

Você está no caminho certo. Fora o que você citou acima, deixo como sugestão para você, alterar a ordem que desenha a bolinha/bolão na tela, pois, da forma como está seu código quando apertamos shift ele faz o bolão(correto), entretanto, quando paramos de pressionar ele irá desenhar da próxima vez um bolão e não uma bolinha, para só depois disso desenhar uma bolinha. Entende ? Caso tenha ficado confuso, teste o seguinte:

  • Pressione shift para desenhar o bolão
  • Solte o shift
  • Clique normalmente. Era para desenhar uma bolinha, certo ? Entretanto, desenhou um bolão
  • Depois destes três passos ele desenhará a bolinha novamente

Para corrigir isto, basta na função desenhaCirculo alterar a ordem do desenho, deixando com que primeiro o programa identifique qual tecla é pressionada e depois desenhe, para que o código pegue o valor do size correto:

function desenhaCirculo(evento) {

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

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

        if (evento.shiftKey==true) {

                size = 20;

        } else if (evento.shiftKey==false) {

                size = 10;

        }

        pincel.fillStyle = cores[i];
        pincel.beginPath();
        pincel.arc(x, y, size, 0, 2 * 3.14);
        pincel.fill();

    }

Qualquer dúvida estou a disposição. Espero ter ajudado. Bons estudos!!!

Nádiaaa valeu!!! Eu tinha percebido isso sim, mas não fazia ideia de como impedir huahuahuahu... Coloquei como vc mostrou e deu certo =] Brigadão!!!