Curso Intensivo de Canvas: Explore a Criatividade
Sobre a Aula

Capturando eventos do mouse e teclado

Vamos explorar a captura de eventos do mouse e do teclado no HTML Canvas, permitindo interações ricas e dinâmicas com os usuários.

1. Eventos do Mouse:

Os eventos do mouse, como click, mousemove, e mousedown, oferecem maneiras poderosas de interagir com o Canvas. Ao capturar esses eventos, podemos criar experiências interativas, como cliques e movimentos do cursor.

Exemplo de Captura de Clique do Mouse

canvas.addEventListener('click', function(evento) {
  var mouseX = evento.clientX - canvas.getBoundingClientRect().left;
  var mouseY = evento.clientY - canvas.getBoundingClientRect().top;

  // Código de resposta ao clique
  console.log('Clique em (' + mouseX + ', ' + mouseY + ')');
});

2. Eventos do Teclado:

Os eventos do teclado, como keydown e keyup, permitem que você responda a pressionamentos de teclas. Isso é útil para criar jogos, formulários interativos e outras aplicações que requerem entrada do teclado.

Exemplo de Captura de Pressionamento de Tecla

window.addEventListener('keydown', function(evento) {
  // Código de resposta ao pressionamento de tecla
  console.log('Tecla pressionada: ' + evento.key);
});

3. Coordenadas do Evento:

Ao capturar eventos do mouse, é crucial converter as coordenadas do evento para as coordenadas do Canvas. Isso garante que suas interações estejam alinhadas corretamente com os elementos visuais no Canvas.

Exemplo de Conversão de Coordenadas

canvas.addEventListener('mousemove', function(evento) {
  var mouseX = evento.clientX - canvas.getBoundingClientRect().left;
  var mouseY = evento.clientY - canvas.getBoundingClientRect().top;

  // Código de resposta ao movimento do mouse
  console.log('Mouse em (' + mouseX + ', ' + mouseY + ')');
});

Aqui está um exemplo completo

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Exemplo de Interação no Canvas</title>
  <style>
    canvas {
      border: 1px solid #000;
      display: block;
      margin: 20px auto;
    }
  </style>
</head>
<body>
  <canvas id="meuCanvas" width="400" height="200"></canvas>

  <script>
    var canvas = document.getElementById("meuCanvas");
    var contexto = canvas.getContext("2d");
    var circulo = { x: 50, y: 100, raio: 20, velocidade: 4 };

    function desenharCirculo() {
      contexto.clearRect(0, 0, canvas.width, canvas.height);
      contexto.beginPath();
      contexto.arc(circulo.x, circulo.y, circulo.raio, 0, 2 * Math.PI);
      contexto.fill();
    }

    canvas.addEventListener('mousemove', function(evento) {
      circulo.x = evento.clientX - canvas.getBoundingClientRect().left;
      circulo.y = evento.clientY - canvas.getBoundingClientRect().top;
      desenharCirculo();
    });

    window.addEventListener('keydown', function(evento) {
      if (evento.key === 'a') {
        circulo.x -= circulo.velocidade;
      } else if (evento.key === 'd') {
        circulo.x += circulo.velocidade;
      }
      desenharCirculo();
    });

    desenharCirculo();
  </script>
</body>
</html>

Visualização do código

Exemplo de Interação no Canvas

Ao compreender a captura de eventos do mouse e do teclado, você poderá criar experiências mais envolventes e interativas no HTML Canvas.

Nos próximos tópicos, abordaremos a criação de interações específicas com o usuário e a manipulação de objetos em resposta a eventos.

Continue praticando e experimentando para aprimorar suas habilidades de interatividade no Canvas.

Entrar na conversa
Rolar para cima