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

Qual esta sendo o problema?

Boa tarde

Minha programação ficou da seguinte maneira:

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

<script>
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

    pincel.fillStyle = 'grey';
    pincel.fillRect(0, 0, 800, 600);

    var cor = ['blue','green','red'];
    contador = 0

    function desenhaCirculo(evento) {

        function tamanhocirculo(raio) {
            pincel.arc(x, y, raio, 0, 2 * 3.14);
        }

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        var shift = evento.shiftkey
        console.log(x + ',' + y);

        if(shift) {

            pincel.fillStyle = cor[contador];
            pincel.beginPath();
            tamanhocirculo(25);
            pincel.fill();

        } else {

            pincel.fillStyle = cor[contador];
            pincel.beginPath();
            tamanhocirculo(10);
            pincel.fill();
        }
    }

    function mudaCor() {

        contador++
        if(contador >= cor.length) {
            contador = 0
        }

        alert(contador);
        return false
    }


    tela.onclick = desenhaCirculo;
    tela.oncontextmenu = mudaCor;

</script>

Porém ele não muda o tamanho quando apertado, o que fiz de errado?

2 respostas
solução!

Fala! Shaian. Tudo certo ?

Fiz o teste do seu código aqui e ele está construído corretamente. Podemos perceber que o Shift não está sendo identificado. Só temos que fazer uma pequena alteração neste código enviado, na função onde você armazena se houve um evento de Shift. Nesse seguinte trecho:

 var shift = evento.shiftkey

A função correta é o shiftKey, com o K maiúsculo. Logo, mudando apenas isso ele irá mudar o tamanho do círculo quando apertar com Shift pressionado. Com essa correção, ficará da seguinte forma:

var shift = evento.shiftKey

E o código completo, ficará da seguinte forma:

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

    <script>
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.fillStyle = 'grey';
        pincel.fillRect(0, 0, 800, 600);

        var cor = ['blue','green','red'];
        contador = 0

        function desenhaCirculo(evento) {

            function tamanhocirculo(raio) {
                pincel.arc(x, y, raio, 0, 2 * 3.14);
            }

            var x = evento.pageX - tela.offsetLeft;
            var y = evento.pageY - tela.offsetTop;
            var shift = evento.shiftKey
            console.log(x + ',' + y);

            if(shift) {

                pincel.fillStyle = cor[contador];
                pincel.beginPath();
                tamanhocirculo(25);
                pincel.fill();

            } else {

                pincel.fillStyle = cor[contador];
                pincel.beginPath();
                tamanhocirculo(10);
                pincel.fill();
            }
        }

        function mudaCor() {

            contador++
            if(contador >= cor.length) {
                contador = 0
            }

            alert(contador);
            return false
        }


        tela.onclick = desenhaCirculo;
        tela.oncontextmenu = mudaCor;

    </script>

Se você tiver mais alguma dúvida, estou por aqui.

Abraço e Bons Estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Muito Obrigado, não havia me atentado ao "k" maiúsculo.