Criando animações

Agora que já sabemos usar timers, vamos ver como fazer para que um objeto se movimente em uma taxa pré-definida.

Para isso, iremos utilizar o conceito de taxa de atualização de tela aprendido anteriormente. O objetivo desta lição é criar um quadrado vermelho, e fazer com que ele se movimente pela tela com uma velocidade fixa. Com isso, podemos demonstrar como criar animações sem que a velocidade destas sejam afetadas pelo desempenho do computador as executando.


			
			

Na linha 12 declaramos o bitmap que representará o quadrado vermelho que ficará se movendo na tela, e na linha 42 criamos ele com as dimensões 50x50 pixels.

Na linha 49 mudamos o bitmap alvo para o quadrado, colorimos ele com a cor vermelha na linha 50 e na linha 51 mudamos o alvo de volta para o backbuffer da janela.

O timer timer, que como explicado anteriormente serve para controlar a taxa de atualização da tela possui a frequencia de disparo de 60 Hz (60 vezes por segundo, ou 1/60s). Ele é criado na linha 11, seu tempo é definido na linha 27, ele é adicionado na fila de eventos na linha 63 e iniciado na linha 66

Lógica do programa:

90-99
105-116
  • Verifica se o timer foi disparado (linha 90).
  • Incrementa a posição X (linha 91) e Y (linha 92) do quadrado.
  • Verifica se posição X e Y do quadrado alcançou os limites da tela (linhas 94 e 96). Em caso afirmativo inverte o sentido do movimento do respectivo eixo (+1 vira -1 e vice-versa) (linhas 95 e 97). Assim o conteúdo de dir_x e dir_y irá somar 1 ou decrementar 1, dependendo do sentido desejado.
  • Seta a flag desenha=1 (linha 98) fazendo com que na etapa de atualização de tela, a mesma seja atualizada.
  • Caso a tela precise ser atualizada (desenha==1) (linha 105), mostra o quadrado na posição designada (linha 110).

Outros links