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

Problemas com shiftKey

Tive problemas no meu código, ao pressionar o botão shiftKey, não estava funcionando, troquei de navegador mas não funcionava, então decidir dar uma pesquisada e conseguir achar uma outra maneira de incrementar no meu código esse atalho.

Tive que criar uma outra função que ao pressionar a tecla através de uma string ... function teclaPressionar(event) ..e através da função document.onkeypress atribuída com a função teclaPressionar, conseguir fazer com que ao pressionar a tecla 'F' ele aumentasse o tamanho do radio e a tecla 'G' diminuiria o tamanho do radio.

Não sei se a uma outra maneira mais simplificada de fazer além da normal com o shiftKey, porem foi um meio que conseguir pois não estava funcionando o shiftKey.

<meta charset="UTF-8">
para mudar de cor, clique com o botão direito do mouse.<br>
para aumentar o tamanho aperte a tecla (F).<br>
para diminuir o tamanho aperte a tecla (G).<br>
<canvas width="600"  height="400"></canvas>
<br>
<button>Limpar</button>
<script>
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

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

    var cores = ['blue','red','green'];
    var indiceCorAtual = 0;

    var raio = 10;

    function clear(){
        pincel.fillStyle = 'grey';
        pincel.fillRect(0, 0, 600, 400);
    }
    function teclaPressionar(event){
        var key = event.keyCode;
        return String.fromCharCode(key); 
    }

    document.onkeypress = function(event) {
        var tecla = teclaPressionar(event);

        if(tecla == 'f')
            raio = raio + 20
        if(tecla == 'g' && raio >=0)
            raio = raio - 20
    }

    function desenhaCirculo(evento){

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        console.log("click position: " + x + ", " + y);

        if (evento.shiftKey) {

            raio = raio +20         
        }

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

    }

    tela.onclick = desenhaCirculo;

    function mudaCor(evento) {

        indiceCorAtual++;
        if(indiceCorAtual >= cores.length){
            indiceCorAtual = 0;
        }
        alert('Troucou de cor!');
        return false;
    }


    tela.oncontextmenu = mudaCor;

    var button = document.querySelector("button");
    button.onclick = clear;

</script>
3 respostas
solução!

Atualizando aqui..

percebi que o shiftKey tem que se manter pressionado com o pressionar do botão esquerdo do mouse para funcionar. Mas o que eu achei que era um erro, me levou a aprender de outras formas também.

Fala, José Marcio! Tudo bem contigo?

Mandou muito bem!

Você acabou utilizando recursos mais avançados de javascript, o que te trouxe mais conhecimento com certeza.

Parabéns, meu amigo!

Obrigado por compartilhar seu código conosco!

Testei, ficou bem melhor desse jeito! Very nice ✨

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software