1
resposta

O alvo aparece mas não aparece alert.

<!DOCTYPE html>
<html lang="en">
<head>

  <title>Document</title>
</head>
<body>
<canvas width="600" height="400"></canvas>
<script>

  var tela = document.querySelector('canvas');
  var pincel = tela.getContext('2d');

  pincel.fillStyle = 'lightgray';
  pincel.fillRect(0, 0, 600, 400);

  function desenhaCirculo(x, y, raio,cor) {

      pincel.fillStyle = cor;
      pincel.beginPath();
      pincel.arc(x, y, raio, 0, 2 * Math.PI);
      pincel.fill();
  }

  function limpaTela() {

          pincel.clearRect(0, 0, 600, 400);
  }

  var xAleatorio
  var yAleatorio
  var raio = 10;

  function desenhaAlvo(){

    limpaTela();

    xAleatorio = Math.round(Math.random()*600);
    yAleatorio = Math.round(Math.random()*400);
    desenhaCirculo(xAleatorio, yAleatorio, 30, 'red');
    desenhaCirculo(xAleatorio, yAleatorio, 20, 'white');
    desenhaCirculo(xAleatorio, yAleatorio,raio, 'red');
      console.log( xAleatorio+ ','+ yAleatorio);
  }
  desenhaAlvo()
  setInterval(desenhaAlvo, 3000);

  function verificaAlvo(evento){

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

      if ((x > xAleatorio - 10)
      && (x < xAleatorio + 10)
      && (y > yAleatorio - 10)
      && (y < yAleatorio + 10)){

        alert('Você acertou!!!!');
    }
  }
    tela.onclick = verificaAlvo;

</script>
</body>
</html>
1 resposta

O erro está em offSetLeft que está com S maiúsculo.