M4Tween premier jet

13th juillet, 2009 par Floz

J’ai un peu mis en pause mon application en flex de peinture avec les rubans. J’y reviendrai surement plus tard : j’ai quelques projets en flash avant.
Quand on était à HETIC, on discutait avec Arno de mettre les mains soit dans un moteur de physique/détection de collisions, soit dans un moteur de tween. Le moteur de tween étant plus simple à appréhender seul, du moins je pense, je me suis mis la tête dedans depuis une semaine.

Je suis pas mal le blog de Joa Ebert, notamment pour tout ce qui concerne l’optimisation des performances. J’en parlais dans mon post sur les LinkedList d’ailleurs. Il écrivait qu’il y avait fortement moyen d’obtenir de meilleurs perfs en utilisant une structure d’objet pooling, et des linkedList, au lieu de passer par des Array.
C’est donc ce que j’ai voulu faire, puisqu’il a dit que c’était bien, et qu’en plus il l’avait testé pour obtenir un résultat… impressionnant ? (son moteur de tween chez Hobnox contre tweenlite).
Bon, une chose est sure : la magie a moins (beaucoup moins ?) bien fonctionné de mon côté… :)

En tout cas, j’ai pas mal appris en terme de réflexion, ainsi que sur l’utilisation des Object, des Linked List, et des Pools. Je pense d’ailleurs faire mon prochain post sur ce sujet, ça pourrait être intéressant (et plus clair que celui que j’avais fais pour l’effet de désintégration !).

Voilà ce que ça donne (attention, 1000 objets qui bougent. Cliquez sur le swf pour lancer, et recliquez pour arrêter ;))
Avec Tweenlite :

This movie requires Flash Player 9

Avec Tweener :

This movie requires Flash Player 9

Avec M4Tween :

This movie requires Flash Player 9

Du côté des résultats, j’ai ici 32/33 pour TweenLite et 36/37 pour M4Tween. Donc c’est assez similaire, et beaucoup moins ouf de ce que Joa Ebert à fait (gneuh). Les FPS oscille beaucoup aussi je trouve sur M4Tween…
Bon, le but n’est pas de remplacer TweenLite (M4Tween peut juste bouger le bordel, il n’y a pas de plugins pour faire des transitions de couleurs etc.), mais d’avoir un moteur de tween interne au framework minuit4, pour nos propres outils.

Donc là, je me sors un peu la tête de ce code. Je verrais dans quelques jours si je vois pas des choses à changer/une partie de la structure à revoir.
Arno pense le porter en JS, donc il y verra surement des choses à revoir. :)

En ce qui concerne son utilisation :
Pour créer une Tween : M4Tween.create( l’objet sur lequel appliquer la tween, la durée de la tween en secondes, { x: la valeur, y: la valeur, …, easing: Quad.EaseIn, delay: la durée en seconde, onComplete : nomdefonction, onCompleteParams: [ param1, param2, ... ] });
Pour supprimer une Tween : M4Tween.release( laTween );
Pour supprimer une Tween (alternative) : laTween.dispose();
Pour supprimer une Tween d’un objet : M4Tween.releaseTweenOf( l’objet sur lequel a été appliqué la tween );

Les commentaires sont légers pour le moment, j’y reviendrai prochainement.

Pour terminer, l’outil de mesure de performance de minuit4 se voit doté d’une nouvelle fonctionnalité : calculer la moyenne des FPS sur la durée !

Télécharger les sources de M4Tween ici.
Télécharger les sources de l’outil de mesure de performances ici.
Le lien vers le SVN de minuit4 ici.

1 Commentaire pour “M4Tween premier jet”

  1. [...] générale, j’ai repris le principe que Flo avait déjà mis en place pour les M4Tween, le principe d’objet pooling en moins. La classe M4Tween javascript requiert la librairie [...]

Laisser un commentaire