Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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