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

Uma cor para cada clique do mouse

Olá! Tentei implementar um código com o que aprendi até agora com o curso... (Função, variável, for, while)mas infelizmente não tive sucesso. Meu objetivo era que uma bolinha de cor diferente aparecesse conforme determinado clique no mouse. Daí comecei a pesquisar sobre eventos com mouse e acabei encontrando um caminho para aquilo que objetivara, com essa pesquisa aprendi sobre o evento "ondblclick - para duplo clique " e depois sobre, switch e onmousedown. Segue o código.

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

<script>
    var screen = document.querySelector("canvas");
    var brush = screen.getContext("2d");

    brush.fillStyle = "lightgrey";
    brush.fillRect(0, 0, 600, 400);

    var colors = ["grey", "red", "pink"];
    var currentColor = 0;


    function drawCircle(event) {
        brush.fillStyle = colors[currentColor];
        brush.beginPath();
        brush.arc(x, y, 10, 0, 2 * 3.14);
        brush.fill();
    }

    function display2(event) {
        switch (event.which) {
            case 1:
                var x = event.pageX - screen.offsetLeft;
                var y = event.pageY - screen.offsetTop;

                brush.fillStyle = "blue";
                brush.beginPath();
                brush.arc(x, y, 10, 0, 2 * 3.14);
                brush.fill();
                break;
            case 2:
                var x = event.pageX - screen.offsetLeft;
                var y = event.pageY - screen.offsetTop;

                brush.fillStyle = "pink";
                brush.beginPath();
                brush.arc(x, y, 10, 0, 2 * 3.14);
                brush.fill();
                break;
            case 3:
                var x = event.pageX - screen.offsetLeft;
                var y = event.pageY - screen.offsetTop;

                brush.fillStyle = "green";
                brush.beginPath();
                brush.arc(x, y, 10, 0, 2 * 3.14);
                brush.fill();
            default:
                var x = event.pageX - screen.offsetLeft;
                var y = event.pageY - screen.offsetTop;

                brush.fillStyle = "green";
                brush.beginPath();
                brush.arc(x, y, 10, 0, 2 * 3.14);
                brush.fill();
        }
    }
    window.onmousedown = display2;


</script>

A minha dúvida é: Existe alguma forma de implementar essas ações com while ou for? Abraços!;)

2 respostas
solução!

Jessica, boa tarde!

O uso do while seria para continuar o desenhando? Para isso você pode usar o evento onMouseMove, nele você pode fazer ação determinada ao mexer do mouse.

Para isso usaremos um trigger que chamaremos de desenha ele só terá dois valores possíveis: verdadeiro ou falso. E usaremos os eventos que já conhecemos como onMouseDown e onMouseUp.

Ao clicar apertar o mouse e executar o onMouseDown nós deixaremos o desenha con um valor verdadeiro, e se ele parar de apertar deixamos com o valor falso.

E na função de desnharCirculo, nós verificamos, se desenha for igual a true, podemos desenhar, caso seja false, não faz nada. Você pode ver a explicação mais detalhada no exercicio abaixo.

https://cursos.alura.com.br/course/logica-programacao-pratica-com-desenho-animacoes-em-jogo/task/21764

Espero ter ajudado e bons estudos!

Muito obrigada pela resposta. Ainda não havia chegado a este exercício. Abraços!;)