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

alert não é exibido.

<meta charset="UTF-8">
<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);

    var raio = 10;
    var xale;
    var yale;

    function desenhaFundo() {

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

    function limpaTela() {

        pincel.clearRect(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 desenhaAlvo(x, y) {

        desenhaCirculo(x,y, raio + 20, 'red'); // maior círculo
        desenhaCirculo(x,y, raio + 10, 'white');
        desenhaCirculo(x,y, raio, 'red'); // menor circulo
    }

    function sorteiaPosicao(maximo) {

        return Math.floor(Math.random() * maximo);
    }

    function atualizaTela() {

        limpaTela();
        var xale = sorteiaPosicao(600);
        var yale = sorteiaPosicao(400);
        desenhaAlvo(xale, yale);
    }

    setInterval(atualizaTela, 3000);


    function dispara(evento) {

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

        if((x > xale - raio) 
        && (x < xale + raio) 
        && (y > yale - raio) 
        && (y < yale + raio)) {

            alert("Você acertou");
        } 
    }

    tela.onclick = dispara;

</script>
4 respostas

Olá Matheus,

Seu post está sem texto.

acho que agora apareceu

solução!

Olá Matheus,

O seu problema está na function atualizaTela(). Nela você escreveu:

var xale = sorteiaPosicao(600);

var yale = sorteiaPosicao(400);

Dessa forma você está criando novas variáveis dentro da função atualizaTela() ao invés de alterar as variáveis já existentes. Para que você altere as variáveis já existente você não deve colocar o var. Sendo assim a função atualizaTela() deve ser escrita assim:

    function atualizaTela() {

        limpaTela();
        xale = sorteiaPosicao(600);
        yale = sorteiaPosicao(400);
        desenhaAlvo(xale, yale);
    }

Espero ter ajudado.

muito obrigado mesmo, agora funcionou :D