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

TELA NÃO SE MOVE

<!DOCTYPE html>
<meta charset="utf-8">
<canvas width="600" height="400" style="border:1px solid #000000"></canvas>

<script>

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

    // variaveis do circulo

    var x = 20;
    var y = 20;
    var raio = 10

    //Códigos do Teclado

    var esquerda = 37;
    var cima = 38;
    var direita = 39;
    var baixo = 40;

    // taxa de incrimento

    var taxa = 10;

    // pintura da tela

    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 atualizaTela(){

        limpaTela();
        desenhaCirculo(x, y, raio, "blue");

    }

    function leDoTeclado(evento){

        if (evento.keyCode == cima){
            y = y - taxa;
        } else if (evento.keyCode == baixo){
            y = y + taxa;
        } else if (evento.keyCode == esquerda){
            x = x - taxa;
        } else if (evento.keyCode == direita){
            x = x + taxa;
        }

    }


    document.onkeydown = leDoTeclado;


</script>

Olá, sei que ando postando muitas dúvidas ultimamente mas estou sempre errado algumas coisas hahahhaa

Este é meu código, aparentemente esta correto e até conferi o gabarito, porém a bolinha não se mexe quando eu aperto as teclas direcionais.

3 respostas
solução!

Faaala André, tudo bem ?

É um pequeno errinho se deve ao fato de você não estar chamando a função setInterval, que serve para chamar uma função em intervalos especificados e neste caso, ela nos será útil para que possamos atualizar a tela e desenhar a bolinha em outra posição. Fica da seguinte forma:

setInterval(atualizaTela, 20);

Adicione isto no seu código e você alcançará o resultado desejado.

Quanto a suas postagens de dúvidas, fique a vontade, o fórum é para gente se ajudar, não se acanhe. hahahah

Qualquer dúvida estou a disposição. Espero ter ajudado. Bons estudos!!!

Boa noite, André! Como vai?

O problema é que em momento nenhum vc chama a função atualizaTela() responsável por atualizar e desenhar na tela o círculo.

Pegou a ideia? Qualquer coisa é só falar.

Grande abraço e bons estudos, meu aluno!

Muito obrigado pela ajuda de vocês dois. :D

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