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

O círculo muda de cor

Inseri o código abaixo, quando clico com o direito, sai azul, quando com o esquerdo, sai vermelho. Porém no próximo clique o círculo muda de cor. Ou seja, de vermelho para azul... =(

    <canvas id="tela" width="1000" height="400"></canvas>
    <script>
        var tela = document.getElementById("tela");
        var c = tela.getContext("2d");
        //Variáveis globais
        var x;
        var y;
        var cx;
        var cy;
        var cor;
        c.fillStyle="gray";
        c.fillRect(0, 0, 1000, 390);

        //Excluir
        alertaClique = function(evento){
//         var alertaClique = function(evento){
            //Recebe a coordenada X
            x = evento.pageX;
            //Recebe a coordenada Y
            y = evento.pageY;
            //Recebe a coordenada X em relação ao canvas
            var cx = evento.pageX - tela.offsetLeft;
            //Recebe a coordenada Y em relação ao canvas
            var cy = evento.pageY - tela.offsetTop;
            console.log("Posição do clique: X: " + x + "; Y: " + y);

            alert("Alguém clicou no canvas! Posição: X: "+ x + "; Y: " + y + ".\nEm relação ao canvas é a posição: X: " + cx + "; Y: " + cy + ".");
        }

        function desenhaCirculo(cor){
            //Desenha um círculo azul em cada clique
            c.fillStyle = cor;
            c.beginPath();
            c.arc(x, y, 10, 0, 2 * 3.14);
            c.fill();
        }

        function detectLeftButton(evt) {
            evt = evt || window.event;
            var button = evt.which || evt.button;
            if(button == 1) {
                // ação para o botão esquerdo
                desenhaCirculo("blue");
                tela.onclick = alertaClique;
            } else if(button == 2) {
                // ação para a rodinha do mouse
                alert("Você usou a rodinha!");
            } else if(button == 3) {
                // ação para o botão direito
                desenhaCirculo("red");
                tela.onclick = alertaClique;
            }
        }

        window.onmousedown = detectLeftButton;


    </script>
2 respostas
solução!

Fala Paulo, beleza?

Consegui arrumar. Era só alguns ajustes no evento, segue o código :).

    <meta charset="utf-8">
    <canvas id="tela" width="1000" height="400"></canvas>
    <script>
        var tela = document.getElementById("tela");
        var c = tela.getContext("2d");
        //Variáveis globais
        var x;
        var y;
        var cx;
        var cy;
        var cor;
        c.fillStyle="gray";
        c.fillRect(0, 0, 1000, 390);

        //Excluir
        alertaClique = function(evento){
//         var alertaClique = function(evento){
            //Recebe a coordenada X
            x = evento.pageX;
            //Recebe a coordenada Y
            y = evento.pageY;
            //Recebe a coordenada X em relação ao canvas
            var cx = evento.pageX - tela.offsetLeft;
            //Recebe a coordenada Y em relação ao canvas
            var cy = evento.pageY - tela.offsetTop;
            console.log("Posição do clique: X: " + x + "; Y: " + y);

            alert("Alguém clicou no canvas! Posição: X: "+ x + "; Y: " + y + ".\nEm relação ao canvas é a posição: X: " + cx + "; Y: " + cy + ".");

            detectLeftButton(evento);

        }

        function desenhaCirculo(cor){
            //Desenha um círculo azul em cada clique
            c.fillStyle = cor;
            c.beginPath();
            c.arc(x, y, 10, 0, 2 * 3.14);
            c.fill();
        }

        function detectLeftButton(evt) {

            evt = evt || window.event;


            var button = evt.which || evt.button;
            if(button == 1) {
                desenhaCirculo("blue");
                tela.onclick = alertaClique;
            } else if(button == 2) {
                // ação para a rodinha do mouse
                alert("Você usou a rodinha!");
            } else if(button == 3) {
                // ação para o botão direito
                desenhaCirculo("red");
                tela.onclick = alertaClique;


            }
        }

        tela.onmousedown = alertaClique;


    </script>

Pessoal, há uma nova versão do curso regravada por mim.

https://www.alura.com.br/curso-online-logica-programacao-pratica-com-desenho-animacoes-em-jogo

O assunto abordado é o mesmo mas as explicações e exercícios são diferentes. Foi um pedido dos nossos alunos.

Confiram lá!