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

Não retorna o alert quando acerto o alvo

<canvas height="800" width="600"></canvas>

<script type="text/javascript">

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

    pincel.fillStyle = "lightgray";
    pincel.fillRect(0,0,800,600);

    var raio = 10;
    var xAleatorio;
    var yAleatorio;

    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,800,600);
    }

    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(800);
        yAleatorio = sorteiaPosicao(600);

        desenhaAlvo(xAleatorio,yAleatorio);


    }

    setInterval(atualizaTela,1000);

    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;




</script>
2 respostas
solução!

Teve um erro bem comum no seu código que na verdade é culpa do JavaScript por ser bem chato com essa questão de letra maiúscula ou minúscula ao mesmo tempo que é uma linguagem meio bagunçada.

Pela lógica que qualquer um entenderia que a forma correta do "onClick" é com esse C maiúsculo já que é assim que separamos as palavras... MAAAAAS é tudo minúsculo hahahaha

Só trocar essa linha aqui que seu código passa a funcionar, todo o resto ta certo:

    tela.onclick = dispara;

Deixa "onclick" tudo minúsculo, salva e testa que vai funcionar.

Obrigado pelo retorno. Realmente o costume do padrão camionCase me fez errar a chamada da função onclick.