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

Solução código - DesenhaCirculo (incrementando com o SHIFT)

E ai pessoal,

Este foi mais fácil pois era só acumular os valores rsrsrsr

<h1>..:: Desenha Circulo ::..</h1>
<canvas id="tela" width="600" height="400"></canvas>
<h3>Status</h3>
<table>
    <tr>
        <td>Cor do circulo em HEX (<font color="red">botão direito</font>)</td>
        <td><input id="cor" size="4" value="#0000FF"></td>
    </tr>
    <tr>
        <td>Incremento/Decremento com o botão <font color="red">Shift</font></td>
        <td><input id="botaoShift" size="4" value="10"></td>
    </tr>
    <tr>
        <td>Valor atual do <font color="red">raio</font></td>
        <td><input id="valorRaio" size="4" value="10"></td>
    </tr>
</table>

<script>
    var tela = document.getElementById('tela');
    var lapis = tela.getContext('2d');

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

    var corHexa = '#';

    //Valor padrão do raio
    var raio = document.getElementById('valorRaio');
    console.log(raio);
    raio = parseInt(raio.value);
    console.log(raio)

    function corCirculo() {
        var hexadecimais = '0123456789ABCDEF';
        corHexa = '#';

        for (var i = 0; i < 6; i++ ) {
            corHexa += hexadecimais[Math.floor(Math.random() * 16)];
        }

        document.getElementById('cor').value = corHexa;

        return false;
    }

    tela.oncontextmenu = corCirculo;

    function desenhaCirculo(evento) {

        //Cor do circulo
        var corCirculo = document.getElementById('cor').value;
        console.log(corCirculo);

        //Valor do incremento para o botao Shift
        var incrementoCirculo = document.getElementById('botaoShift');
        incrementoCirculo = parseInt(incrementoCirculo.value);

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        lapis.fillStyle = corCirculo;
        lapis.beginPath();

        if (evento.shiftKey == true) {
            raio += incrementoCirculo;
            document.getElementById('valorRaio').value = raio;
            console.log(raio);
        }

        lapis.arc(x, y, raio, 0, 2 * 3.14);
        lapis.fill();
        console.log(x + ',' + y);
    }

    tela.onclick = desenhaCirculo;
</script>
2 respostas

Oi Fabio, obrigado por compartilhar!

solução!

Fábio, sou vou te pedir uma mudança,ok? Sei que não curtiu o document.querySelector, mas peço que o utilize. Ele é mais versátil do que o getElementoById, ou o getElementsByTagName, ou o getElementsByClassName.

No entanto, sei que no uso que você esta fazendo dele ele não é tão versátil assim porque esta sendo subutilizado. Quando você evoluir em JavaScript, verá como o querySelector e o querySelectorAll são poderosos e verá que eles é que são mais usados. Que tal criar um bom hábito já agora, uma vez que você gosta dessa parte de manipulação de DOM?

Outro ponto que você pode mexer no seu código é esse:

 //Valor do incremento para o botao Shift
        var incrementoCirculo = document.getElementById('botaoShift');
        incrementoCirculo = parseInt(incrementoCirculo.value);

Aqui a variável incrementoCirculo começa como um elemento do DOM e depois muda seu valor para o valor que o elemento do DOm carrega. Não é muito interessante uma variável mudar assim, ou você cria duas variáveis diferentes com nomes diferentes para indicar o que cada uma guarda ou faz assim:

var incrementoCirculo = parseInt(document.getElementById('botaoShift').value)

A variável agora guarda o valor do incremento, o que o nome deixa claro.

Fora isso, tudo tranquilo. Sucesso e bom estudo!