Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida sobre não exibir nada

Há algum tempo venho percebendo que às vezes o JavaScript para de identificar a tag que fecha o Script "", apresentando essa mensagem: "Uncaught SyntaxError: Unexpected end of input" exatamente na linha da tag de fechamento. Alguém poderia me explicar isso? Uso o Sublime Text 3. Talvez não seja um problema do programa, e sim erro meu mesmo, por isso vou deixar meu código aqui caso alguém identifique um erro que eu não estou vendo. Agradeço a atenção.

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

<script>

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

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

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

    function desenhaCenario() {

    pincel.fillStyle = 'lightblue'; // desenha o céu.
    pincel.fillRect(0, 0, 800, 600);

    pincel.fillStyle = "green"; // desenha a grama.
    pincel.beginPath();
    pincel.fillRect(0,400,800,600);

    // primeira nuvem:

    desenhaCirculo(100,50,20,"white");

    desenhaCirculo(150,100,20,"white");
    pincel.fill();

    desenhaCirculo(50,100,20,"white");
    pincel.fill();

    desenhaCirculo(100,100,30,"white");
    pincel.fill();

    desenhaCirculo(130,70,25,"white");
    pincel.fill();

    desenhaCirculo(70,70,25,"white");
    pincel.fill();

    // segunda nuvem:

    desenhaCirculo(700,50,20,"white");
    pincel.fill();

    desenhaCirculo(650,100,20,"white");
    pincel.fill();

    desenhaCirculo(750,100,20,"white");
    pincel.fill();

    desenhaCirculo(700,100,30,"white");
    pincel.fill();

    desenhaCirculo(670,70,25,"white");
    pincel.fill();

    desenhaCirculo(730,70,25,"white");
    pincel.fill();

    // árvore:

    pincel.fillStyle = "brown";
    pincel.beginPath();
    pincel.fillRect(50,270,70,300);

    desenhaCirculo(85,250,100,"green");

    }

    var canvasX = 800;
    var canvasY = 600;


    function desenhaAlvo() {

    var x = Math.round(Math.random() * canvasX);
    var y = Math.round(Math.random() * canvasY);

        desenhaCirculo(x,y,30,"red");
        desenhaCirculo(x,y,20,"white");
        desenhaCirculo(x,y,10,"red");

    }

    function atualizaTela() {

        desenhaCenario();
        desenhaAlvo();
    }

    function dispara(evento) {

        var cliqueX = evento.pageX - tela.offLeft;
        var cliqueY = evento.pageY - tela.offTop;

        if (cliqueX >= x - 10
            && cliqueX <= x + 10 
                && cliqueY >= y - 10 
                    && cliqueY <= y + 10) {

            alert("Acertou!");
    }

    desenhaCenario();
    desenhaAlvo();

    setInterval(atualizaTela, 1000);

</script>
1 resposta
solução!

Fala! Gabriel, tudo bem ?

Esse erro Uncaught Syntax Error: Unexpected end of input quer dizer que não foi fechado algum conjunto de parênteses() ou chaves{} ao longo do código. Esses delimitadores são importantes para dizer ao Javascript onde cada trecho começa e termina.

Analisei seu código e Na função dispara, está faltando fechar as chaves {} da função, por isso ao executarmos o código a tela fica toda em branco.

Alterando a função e adicionando as chaves, o código ficará da seguinte maneira:

function dispara(evento){

    var cliqueX = evento.pageX - tela.offLeft;
    var cliqueY = evento.pageY - tela.offTop;

if (cliqueX >= x - 10
    && cliqueX <= x + 10
        && cliqueY >= y - 10
            && cliqueY <= y + 10) {

    alert("Acertou!");
}}

Se você tiver mais alguma dúvida, estou por aqui.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software