![]() |
|
||||
Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
Você está aqui: HTML5 ::: HTML5 + JavaScript ::: Animação, Animações, Técnicas de Animação |
Como mover uma bola na superfície do Canvas do HTML5 na horizontal - Para a direita, para a esquerda e rebatendoQuantidade de visualizações: 564 vezes |
|
Nesta dica mostrarei uma técnica básica de animação em JavaScript. Para isso nós vamos usar o objeto Canvas do HTML5 e mover um desenho (uma bolinha) na horizontal. Primeiro vamos movimentá-la da esquerda para a direita, depois da direita para a esquerda e, finalmente, ela vai ficar rebatendo de um lado para o outro da tela. Comece analisando a imagem a seguir: ![]() Agora vamos ao código. Veja a página HTML completa, incluindo o código JavaScript para a animação: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
<!doctype html>
<html>
<head>
<title>Desenvolvimento de Games usando HTML5 e
JavaScript</title>
</head>
<body>
<Canvas id="canvas" width="800" height="300"></Canvas>
<script type="text/javascript">
// obtemos uma referência ao elemento Canvas
var canvas = document.getElementById("canvas");
// obtemos o contexto de desenho
var contexto = canvas.getContext("2d");
// taxa de deslocamento da bola
var taxa_deslocamento = 5;
// posição y da bola
var pos_y = 100;
// posição x da bola
var pos_x = 0;
// função que faz a animação
function animar(){
// a bola já está no limite da margem direita
// do canvas?
if(pos_x < canvas.width){
// incrementa a posição x da bola
pos_x = pos_x + taxa_deslocamento;
// limpamos o canvas
contexto.clearRect(0, 0, canvas.width, canvas.height);
// e desenhamos a bola na nova posição
contexto.fillStyle = "red";
contexto.beginPath();
contexto.arc(pos_x, pos_y, 15, 0, Math.PI * 2, true);
contexto.closePath();
contexto.fill();
// e fazemos uma nova chamada à função animar()
window.requestAnimationFrame(animar);
}
}
// fazemos a primeira chamada à função animar()
window.requestAnimationFrame(animar);
</script>
</body>
</html>
Veja que criamos uma variável chamada taxa_deslocamento que define a quantidade de pixel que o objeto será movido para a direita à cada vez que a função window.requestAnimationFrame() for chamada. Lembre-se de que, em geral, esta função é chamada 60 vezes por segundo (60 frames por segundo). Quanto maior o valor da variável taxa_deslocamento, mais rápido a bolinha se moverá pelo Canvas. A posição pos_y da bola é definida como 100 pixels e não sofrerá alteração, pois estamos movimento o objeto apenas na horizontal. A variável pos_x começa em 0 e é incrementada com o valor da variável taxa_deslocamento. Como estamos aumentando o valor da variável pos_x de forma positiva, a bola se movimentará para a direita. Note também o uso da função clearRect() do Canvas para limpar a superfície do elemento antes de desenharmos a bolinha novamente. Veja agora como podemos movimentar a bolinha da direita para a esquerda: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
<!doctype html>
<html>
<head>
<title>Desenvolvimento de Games usando HTML5 e
JavaScript</title>
</head>
<body>
<Canvas id="canvas" width="800" height="300"></Canvas>
<script type="text/javascript">
// obtemos uma referência ao elemento Canvas
var canvas = document.getElementById("canvas");
// obtemos o contexto de desenho
var contexto = canvas.getContext("2d");
// taxa de deslocamento da bola
var taxa_deslocamento = 5;
// posição y da bola
var pos_y = 100;
// posição x da bola começando do lado direito
var pos_x = canvas.width;
// função que faz a animação
function animar(){
// a bola já está no limite da margem esquerda
// do canvas?
if(pos_x > 0){
// decrementa a posição x da bola
pos_x = pos_x - taxa_deslocamento;
// limpamos o canvas
contexto.clearRect(0, 0, canvas.width, canvas.height);
// e desenhamos a bola na nova posição
contexto.fillStyle = "red";
contexto.beginPath();
contexto.arc(pos_x, pos_y, 15, 0, Math.PI * 2, true);
contexto.closePath();
contexto.fill();
// e fazemos uma nova chamada à função animar()
window.requestAnimationFrame(animar);
}
}
// fazemos a primeira chamada à função animar()
window.requestAnimationFrame(animar);
</script>
</body>
</html>
Veja que agora o valor da variável pos_x é ajustada inicialmente para a largura do Canvas. Então, dentro da chamada à função window.requestAnimationFrame() nós decrementamos o seu valor de acordo com o valor da variável taxa_deslocamento, que controla a velocidade do objeto. Para finalizar, veja o código HTML5 completo que aplica o efeito de rebater na bolinha, na horizontal, é claro: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
<!doctype html>
<html>
<head>
<title>Desenvolvimento de Games usando HTML5 e
JavaScript</title>
</head>
<body>
<Canvas id="canvas" width="800" height="300"></Canvas>
<script type="text/javascript">
// obtemos uma referência ao elemento Canvas
var canvas = document.getElementById("canvas");
// obtemos o contexto de desenho
var contexto = canvas.getContext("2d");
// taxa de deslocamento da bola
var taxa_deslocamento = 5;
// posição y da bola
var pos_y = 100;
// posição x da bola
var pos_x = 0;
// função que faz a animação
function animar(){
// a bolinha alcançou os limites das margens
// direita ou esquerda?
if((pos_x > canvas.width) || (pos_x < 0)){
// muda o sinal da taxa_deslocamento
taxa_deslocamento = taxa_deslocamento * -1;
}
// movimentamos a bolinha
pos_x = pos_x + taxa_deslocamento;
// limpamos o canvas
contexto.clearRect(0, 0, canvas.width, canvas.height);
// e desenhamos a bola na nova posição
contexto.fillStyle = "red";
contexto.beginPath();
contexto.arc(pos_x, pos_y, 15, 0, Math.PI * 2, true);
contexto.closePath();
contexto.fill();
// e fazemos uma nova chamada à função animar()
window.requestAnimationFrame(animar);
}
// fazemos a primeira chamada à função animar()
window.requestAnimationFrame(animar);
</script>
</body>
</html>
Execute este exemplo e veja como a bolinha rebate ao chegar à margem direita ou esquerda do Canvas. O truque aqui foi multiplicar o valor da variável taxa_deslocamento por -1. Em outra dica veremos como movimentar a bola na vertical, ou seja, manipulando a variável y. |
|
|
Veja mais Dicas e truques de HTML5 |
Dicas e truques de outras linguagens |
|
JavaScript - Formulários HTML - Como marcar ou desmarcar todas as checkboxes de um formulário HTML de uma só vez usando JavaScript |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






