2
respostas

O meu não estava saindo do 0, apesar de estar reconhecendo o clique direito.

Consegui fazer funcionar o meu código com a função event.preventDefault(). Mas não tenho muita noção do que ela faz, apenas segui a instrução de outro neste fórum. Fora isso, o meu código estava exatamente como o do professor, não vejo motivos para não funcionar, porém, gostaria de entender meu erro.

<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);

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


    function desenhaCirculo(evento) {

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

    tela.onclick = desenhaCirculo;

    function mudaCor() {

        event.preventDefault()
        corAtual++;

        alert (corAtual); // coloquei esse alert para descobrir qual o erro.
        if(corAtual >= cores.length){

            corAtual = 0

        }

        return false;
    }

    tela.oncontextmenu = mudaCor;

</script>
2 respostas

Boa noite Mário, tudo bem?

Já vou dar uma olhada no teu código, mas já aproveito pra falar o que a função preventDefault faz.

Para cada evento, existe um comportamento padrão que o navegador vai executar quando esse evento acontecer. Quando você dá o comando "evento.preventDefault()", o que você está fazendo é falando pro computador não executar esse comportamento.

Como eu disse.. já olho teu código e tento te ajudar, deve ser algum erro de sintaxe (alguma letra, vírgula, ponto, ou outro sinal que pode estar faltando ou no lugar errado)

Opa!

Dei uma olhada aqui, testei sei o preventDefault() e funcionou normalmente...

<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);

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


    function desenhaCirculo(evento) {

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

        pincel.fillStyle = cores[corAtual];

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


    function mudaCor() {

        corAtual++;

        if (corAtual >= cores.length) {

            corAtual = 0

        }

        return false

    }

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

</script>

Nesse casso aí, a função preventDefault() iria inibir o comportamento padrão de aparecer aquele menu que sempre aparece quando clicamos em algo com o botão direito, mas pelo visto, o return false no final da função também cumpre essa missão.