Moi j'aurai surtout appelé ça
FineGrainTimer car de base à part le fait que ça tourne sur le thread des animations (et donc à 60Hz) ça n'a pas grand chose à voir avec les animations en elle-même.
Timeline (et donc
Transition) est basé sur le
tweening (j'ai lié l'article EN car l'article FR est ridiculement court). Ce qui permet de faire des animations comme en Flash : on défini la position de début et de fin d'un propriété (ou plus) et le logiciel interpole la valeur de la propriété entre les deux positions temporelles (avec la fonction/objet fourni interpolator). Ce qui permet d'avoir la position de l'objet rien qu'en spécifiant le temps de l'animation. Tout est calculé automatiquement.
...
Avec
AnimationTimer, tu reçois juste le temps actuel et c'est à toi de te débrouiller pour savoir ce que tu dois faire à ce moment là (éventuellement en fonction de ce que tu as fais la fois d'avant). Parmis les usages non-directement graphique, on peut par exemple l'utiliser pour faire "vivre" le monde dans un jeu (déplacer les ennemis, etc.) coté serveur (on peut conceptuellement découper le jeu en une partie server et une partie affichage cliente sur un jeu tournant sur le même ordi, sans directement avoir un jeu qui ne peut se jouer qu'en réseau/sur le net avec un server/server).
Mais dans les deux cas, j'insiste bien, en JavaFX, le programmeur ne demande jamais le réaffichage de la scène (ce qu'on faisait en AWT/Swing en appelant
paint() ou
repaint()). Ici la scène* (ou une partie de la scène) sera ré affichée uniquement si on est emmené à manipuler la valeur d'une propriété qui doit provoquer une modification de l'affichage (c'est le principe du SceneGraph).
*En fait, l'arbre graphique que le programmeur manipule dans le SceneGraph via l'API publique n'est même pas celui qui est visible à l'écran. Il existe un second arbre graphique interne à Prism qui est une copie de celui manipulé par le programmeur. A chaque pulse du timer, Prism synchronise l'état de l'arbre du SceneGraph publique avec celui privé pour faire son affichage (source : Richard Bair, JavaFX Lead Architect, JavaOne '11 et '12).
Partager