Boa noite pessoal!
Estou programando um aplicativo pra android e gostaria muito que as nuvens no background ficassem o tempo todo se movendo. Atualmente faço isso através de uma Animation, que executa a translação no eixo X e não acaba nunca (setRepeatCount(-1)).
Porém quando executo o aplicativo no emulador do eclipse parece meio pesado, e quando executo outros movimentos com o caracter principal do jogo parece que a animação diminui a velocidade quando clico nas teclas para movimentar o personagem.
Gostaria de saber se estou fazendo isso de uma forma legal ou teria algo mais “leve”.
Agradeço desde já!!
Olá!
Não domino muito o assunto de desenvolvimento de jogos pra Android ainda, mas quero te fazer uma pergunta:
Essas nuvens se movimentando estão numa Thread separada?
A forma mais leve seria fazer a animação desenhando na tela invés de usar a Animation.
Por que para cada iteração da animação ele vai solicitar para sua tela recalcular todos os bounds novamente.
PS: Só descarte a possibilidade de usar essa solução quando testar em um device real, o emulador é MUITO lento, sinceramente, não conte com ele para nada.
Opa valeu as dicas pessoal : )
É talvez seja melhor desenhar tudo numa View mesmo. É bom saber também que não posso contar com a performance percebida utilizando o emulador hehe.
Respondendo a pergunta, acredito que seria algo que aconteceria em paralelo com outros eventos na tela, estar ou não na mesma thread que desenha o resto do cenário acredito ser questão de escolha, e pelo que o Marky disse pode ser melhor fazer o drawing junto do resto. Achei na net coisas sobre SufaceView, pode ser que ajude!
Will, o indicado para jogos realmente é o SurfaceView. Você vai ter mais performance e pode usar double buffering. Outra coisa é que, para desenvolvimento de jogos, o emulador é bem ruim. Recomendo usar o celular como plataforma de testes.
Acho que o efeito que vc quer de nuvens se chama parallax scrolling.
Algumas idéias:
1 - Se vc usar OpenGL vai ter mais performance (mesmo se forem gráficos 2D).
2 - Você pode usar uma engine de jogos já pronta. A que anda mais famosa no Android para jogos 2D é a AndEngine (http://www.andengine.org/)
3 - Eu recomendaria vc ler alguns livros de programação de jogos. Nesse post tem 2 que gosto muito: http://www.codemansion.com/2011/10/books-on-java-game-programming.html
Se quiser dicas, pode mandar DM.