[Stratégie]Boucle d'animation en Java
Bonjour,
Je voudrais créer une boucle d'animation en Java pour des animations 2D.
C'est à dire :
tous les delta temps faire {
calculer les nouvelles positions de l'animation
afficher l'animation
}
Il faut bien sûr que le temps d'exécution de "calculer les nouvelles positions de l'animation" + "afficher l'animation soit inférieur" à delta temps
Vous auriez une piste efficace à m'indiquer pour réaliser cet algorithme ?
Merci.
[ Modéré par vedaer ]
-> Ajout du tag dans le titre
[ Merci de respecter les Règles du Forum ]
Re: Boucle d'animation en Java
Citation:
Envoyé par Kaji
tous les delta temps faire {
calculer les nouvelles positions de l'animation
afficher l'animation
}
Ca tu peux le faire avec un Timer, cf FAQ
Citation:
Envoyé par Kaji
Il faut bien sûr que le temps d'exécution de "calculer les nouvelles positions de l'animation" + "afficher l'animation soit inférieur" à delta temps
ca c'est moins simple à garantir, ca dépend de ton calcul, de ce que tu a afficher. La il faut optimiser au maximum l'affichage et le calcul. Ca depend aussi de ton laps de temps.
Autrement si tu veux t'assurer que t'a boucle soit terminée avant un nouvel affichage, autre soulution que le timer, le thread perso, par exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
public class MaClasse implements Runnable
{
private Thread thread;
private long lapsDeTemps = 1000; //en millisencondes, ici une seconde
public MaClasse()
{
}
public void lancerAnimation()
{
if(this.thread!=null)
{
this.thread=newThread(this);
this.thread.start();
}
}
public void run()
{
while(true)
{
long temps = System.currentTimeMillis();
//calcul des positions
//nouvel affichage
long tps = System.currentTimeMillis();
long reste = lapsTemps - (tps-temps);
if(reste>0)
{
try
{
Thread.sleep(reste);
}
catch(Exception e)
{
}
}
}
}
//......
} |
Ce la t'assure que ton animation ne se fera qu'au plus tôt tous les lapsTemps. Mais ça peut durer plus longtemps. Mais au moins tu es sur que ta boucle se terminera avant un nouvel affichage, pas de soucis de double affichage par exemple
JHelp