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

[Bug] Alert não funciona como o esperado

Projeto funcionando corretamente, exeto ao executar a função dispara();

O alert não é exibido. Já olhei em vários outros tópicos uma possível solução, mas não obtive a solução. Já revisei o código várias vezes. Alguém pode me dizer o que está errado?

O código JS está em um arquivo separado, por isso ausência ta tag <script>

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

var raio = 10;
var xAleatorio;
var yAleatorio;

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

function desenhaAlvo(x, y) {
     desenhaCirculo(x, y, raio + 20, 'red');
     desenhaCirculo(x, y, raio + 10, 'white');
     desenhaCirculo(x, y, raio, 'red');
}

function sorteiaPosicao(maximo) {
     return Math.floor(Math.random() * maximo);
}

function atualizaTela() {

     limpaTela();
     xAleatorio = sorteiaPosicao(600);
     yAleatorio = sorteiaPosicao(400);
     desenhaAlvo(xAleatorio, yAleatorio);
}

setInterval(atualizaTela, 1220);

function dispara(evento) {
     var x = evento.pageX - tela.offsetLeft;
     var y = evento.pageY - tela.offsetTop;

     if ((x > xAleatorio - raio)
          && (x < xAleatorio + raio)
          && (y > yAleatorio - raio)
          && (y < yAleatorio + raio)) {
          alert('Acertou!!!');
     }
}

tela.onclick = dispara;
2 respostas
solução!

O código aparentemente está correto, já verificou se o código chega a ser executado?

Pode adicionar uma mensagem e observar se está funcional:

if ((x > xAleatorio - raio)
          && (x < xAleatorio + raio)
          && (y > yAleatorio - raio)
          && (y < yAleatorio + raio)) {
          alert('Acertou!!!');
          console.log('Acertou!!!') //Mensagem no console
     }

Se a mensagem for exibida verifique se o seu navegador não está bloqueando pop-up's, teste em outros navegadores se possível.

Se a mensagem não for exíbida verifique se a condição if está retornando o valor esperado.

Olá Rian, obrigado pela resposta!

Essas suas soluções provavelmente resolveriam o problema se eu o burrin tivesse percebido antes que adicionei CSS no canvas rsrsrsrs. Passou despercebido pela minha parte.

Obrigado pela rápida resposta!

Boa noite!