Les TweensDate de publication : 06/10/2006
Par
Morgan Loyer (pyrrha.developpez.com)
Ce cours est destiné à vous apprendre à utiliser la classe Tween de Flash, ainsi qu'à vous informer sur ses méthodes, ses spécificités.
Cette classe vous permettra, par code, de mettre en mouvement vos movieclips, dynamiquement car réalisée dynamiquement avec du code.
Ce cours a été écrit dans le but d'être également compréhensible par les débutants.
. Informations
Pour utiliser la classe Tween, la version mx 2004 de flash est requise.
La classe Tween a été initialement codée par Robert Penner, avant d'être rachetée par Macromedia ( appartenant nouvellement à Adobe ) et intégrée dans le répertoire de classes de flash.
le chemin par défaut est le suivant : ( C:\Program Files\Macromedia\Flash\fr\First Run\Classes\mx\transitions\Tween.as ).
A la classe Tween s'ajoutent les easing-équations de Penner ( pour appliquer à la transition des effets de ralentissement, d' élasticité...) disponibles dans le répertoire "/easing" du dossier contenant la classe Tween cité plus haut. Vous pouvez télécharger de nouvelles easing-équation sur le site de Penner, en vous rendant sur l'adresse suivante : www.robertpenner.com/easing/
Pour les utiliser, dézippez le repertoire "com" du fichier zip dans le dossier de votre projet ( ou de votre fla ) et ajoutez :
import com.robertpenner.easing.* |
au début de votre code.
I. Utilisation d'une tween
I-A. Utilisation
La classe Tween permet de réaliser des interpolations de mouvements ou effets visuels sur des objets trés facilement dans flash. Pour cela, il faut renseigner à la classe un certain nombre d'arguments.
L'utilisation de la Tween reste accessible même aux débutants, il vous suffit de déclarer une variable qui invoque la classe :
var maTween:Tween = new Tween( objet, propriété, function, départ, fin, durée, useseconds ); |
Détail des arguments :
| Arguments |
Information |
Typage de l'argument |
| objet |
Il s'agit de l'objet sur lequel vous effectuez l'interpolation. |
MovieClip |
| propriété |
la propriété de l'objet qui sera modifiée par la Tween. |
String |
| fonction |
rappel de l'easing-équation choisie ( explications au prochain sous chapitre ) |
Function |
| départ |
valeur de type Number de la propriété au départ de l'animation. |
Number |
| fin |
valeur de type Number de la propriété à la fin de l'animation. |
Number |
| durée |
valeur de type Number de la propriété à la fin de l'animation. |
Number |
| useSeconds |
paramètre Boolean optionnel indiquant si la durée de l'interpolation est calculée en secondes ( true ) ou en frames ( false ) |
Boolean |
Faites bien attention à respecter le typage des arguments ! Notamment pour le paramètre "propriété" qui doit être défini en tant que String.
import mx.transitions.Tween;
import mx.transitions.easing.*;
var maTween:Tween = new Tween( this.fenetre, "_x", Regular.easeOut, 100, 200, 20, false ); |
Si vous souhaitez que votre objet se déplace en diagonale, il vous suffit simplement de définir deux tweens afin de modifier les proprietés _x et _y de votre objet en même temps.
var maTween_x:Tween = new Tween( this.fenetre, "_x", Regular.easeOut, 100, 200, 20, false );
var maTween_y:Tween = new Tween( this.fenetre, "_y", Regular.easeOut, 100, 200, 20, false ); |
Les Tweens permettent également d'agir sur des propriétés telles que l'alpha d'un clip, vous permettant ainsi de réaliser beaucoup de sortes d'effets visuels très facilement, il faut cependant respecter les valeurs acceptées par ces propriétés : une Tween modifiant l'alpha d'un clip de 100% à 200% ne produira rien du tout, car l'alpha à 100% est le maximum.
exemple d'utilisation correcte de la Tween de modication influent sur la propriété alpha :
var maTween_x:Tween = new Tween( this.fenetre, "_alpha", Elastic.easeOut, 100, 0, 20, false ); |
le sous-chapitre suivant vous informera sur les easing équations.
I-B. Les easing-équations
Ce sont les classes qui vous permettront d'obtenir de très beaux effets visuels sur vos Tweens, et ce trés facilement.
Voici une liste incomplète ( car vous pouvez en télécharger d'autres sur le site de Penner, ( www.robertpenner.com/easing/ ) des classes présentes dans le répertoire easing :
| Back |
effet de rebondissement. ( un seul rebondissement ) |
| Bounce |
effet de rebondissements ( multiples rebondissements ) |
| Elastic |
effet d'élasticité. |
| None |
aucun effet. |
| Regular |
Mouvement régulier mais adoucit par un léger ralentissement. |
| Strong |
Ralentissement ou accélération du mouvement . |
Lors du renseignement de la classe de l'équation choisie, vous remarquerez qu'elle est succédée d'un ".easeOut", ".easeIn" ou même ".easeInOut".
Ce paramètre indique en fait quand l'effet de l'équation doit etre effectué :
| easeIn |
L'effet est effectué vers le début de l'interpolation |
| easeOut |
L'effet est effectué vers la fin de l'interpolation |
| easeInOut |
L'effet est effectué deux fois, au début et à la fin de l'interpolation |
Voici un exemple d'utilisation de Tween avec l'effet Bounce, opéré vers la fin de l'interpolation de mouvement :
var maTween:Tween = new Tween( this.fenetre, "_x", Bounce.easeOut, 100, 200, 20, false ); |
Si vous n'êtes pas sûr d'avoir tout compris à ce stade, vous pouvez consulter les exemples, ou bien relire ce chapitre.
Vous pouvez également vous entrainer à réaliser quelques interpolations avec la classe Tween avant de passer au chapitre suivant.
II. Le contrôle des Tweens
Lors du développement de votre application, vous pouvez avoir besoin de déclencher une action à la fin d'une Tween, ou bien lors du démarrage d'une Tween.
Pour cela nous allons utiliser les gestionnaires d'évènements de la classe Tween, ainsi que ses méthodes.
II-A. Les gestionnaires d'évènement de la classe Tween :
Il s'agit en fait de fonctions qui se déclenchent lors d'un état particulier de la Tween ( à la fin par exemple ).
Nous pourrions utiliser ces gestionnaires d'évènement directement sur notre Tween, cependant nous allons utiliser un objet écouteur par souci de propreté, ( cela pourrait nous permettre de supprimer cet écouteur plus tard, si on ne le désire plus ).
Un objet écouteur va récuperer l'évènement d'une classe à sa place. Dans le cas suivant, on définit la fonction d'évènement onMotionFinished appartenant à la classe Tween sur l'objet écouteur listenerObject, puis on indique à flash que cet objet transmettra l'évènement à la classe Tween grâce à la méthode : maTween.addListener(listenerObject);
import mx.transitions.Tween;
import mx.transitions.easing.*;
var maTween:Tween = new Tween( this.fenetre, "_x", Bounce.easeOut, 100, 200, 20, false );
var listenerObject:Object = new Object ();
listenerObject.onMotionFinished = function (Void):Void {
trace(" Je suis terminée !");
}
maTween.addListener(listenerObject); |
Si vous n'avez pas assimilé la notion d'objets écouteurs, vous pouvez vous référer à l'aide flash ( F1 ), nous n'aborderons pas cette notion ici.
Voici un tableau des gestionnaires d'évenements de la classe Tween :
| Tween.onMotionChanged |
appelé lors de chaque changement d'une propriété de l'objet interpolé animé. |
| Tween.onMotionFinished |
appelé lorsque l'objet Tween termine son animation. |
| Tween.onMotionResumed |
invoqué lors de l'appel à la méthode Tween.resume(), provoquant ainsi la reprise de l'animation interpolée. |
| Tween.onMotionStarted |
invoqué lors de l'appel à la méthode Tween.start(), provoquant ainsi le début de l'animation interpolée. |
| Tween.onMotionStopped |
invoqué lors de l'appel à la méthode Tween.stop(), provoquant ainsi l'arrêt de l'animation interpolée. |
II-B. Les méthodes de la classe Tween :
Nous avons précédemment vu comme nous pouvions déclencher des actions en fonction d'évènements.
Nous allons voir à présent comment contrôler directement nos Tweens, à l'aide des méthodes de la classe Tween.
Commençons avec un exemple, vous aurez sûrement remarqué que lorsque nous déclarons une Tween, elle execute l'interpolation aussitôt.
Imaginons à présent que l'on souhaite déclarer notre Tween au début de l'animation, mais la déclencher lors d'un clic sur un bouton,
l'exemple ci-dessous illustre la façon de procéder, en utilisant les méthodes start() et stop() de la classe Tween : ( également téléchargeable ici )
import mx.transitions.Tween;
import mx.transitions.easing.*;
var maTween:Tween = new Tween( this.fenetre, "_x", Bounce.easeOut, 100, 200, 20, false );
maTween.stop();
unBouton.onRelease = function (Void):Void {
maTween.start();
} |
Dans d'autres cas, vous aurez peut-être besoin de rembobiner votre interpolation de mouvement, après un rollOut par exemple. Dans ce cas, nous utiliserons la méthode yoyo() de la classe Tween, qui réalisera l'interpolation de notre Tween à l'envers : ( également téléchargeable ici )
import mx.transitions.Tween;
import mx.transitions.easing.*;
var maTween:Tween = new Tween( this.fenetre, "_x", Bounce.easeOut, 100, 200, 20, false );
maTween.stop();
unBouton.onRollOver = function (Void):Void {
maTween.start();
}
unBouton.onRollOver = function (Void):Void {
maTween.yoyo();
} |
Je vous ai présenté précedemment les méthodes de la classe Tween les plus utilisées, voici un tableau récapitulatif de toutes les méthodes disponibles :
| Tween.yoyo(); |
Indique à l'animation interpolée d'effectuer la lecture à l'envers en partant de la dernière direction des incréments de propriété interpolés. |
| Tween.fforward(): |
Transmet l'animation interpolée directement à la fin de l'animation. |
| Tween.nextFrame(); |
Transmet l'animation interpolée à l'image suivante. |
| Tween.prevFrame(); |
Dirige l'animation interpolée à l'image précédant l'image actuelle. |
| Tween.resume(); |
Reprend une animation interpolée de son point d'arrêt dans l'animation. |
| Tween.rewind(); |
Rembobine une animation interpolée à son début. |
| Tween.start(); |
Démarre l'animation interpolée du début. |
| Tween.stop(); |
Arrête l'animation interpolée sur sa position actuelle. |
| Tween.toString(); |
Renvoie le nom de classe, « [Tween] ». |
III. Les Tweens et leurs propriétés
Pour ce dernier chapitre, nous allons voir rapidement les propriétés disponibles pour la classe Tween.
Ces propriétés sont en lecture seule, c'est à dire que vous ne pouvez pas les modifier, vous pouvez uniquement y accéder pour les lire.
Pour accéder à une propriété de la Tween, il vous faut tout d'abord déclarer la Tween et ensuite aller chercher la propriété sur la variable, voici un exemple avec la propriété duration:
import mx.transitions.Tween;
import mx.transitions.easing.*;
var maTween:Tween = new Tween( this.fenetre, "_x", Bounce.easeOut, 100, 200, 20, false );
var durationDeMaTween:Number = maTween.duration;
trace("durée : "+durationDeMaTween); |
C'est aussi simple que ca.
Voici à présent un tableau récapitulatif des propriétés de la classe Tween :
| Tween.duration |
La durée de l'animation interpolée en images ou en secondes. |
| Tween.finish |
La dernière valeur interpolée pour la fin de l'animation interpolée. |
| Tween.FPS |
Le nombre d'images par seconde de l'animation interpolée. |
| Tween.position |
La valeur actuelle de la propriété du clip cible en cours d'interpolation. |
| Tween.time |
L'heure actuelle dans la durée de l'animation. |
. Conclusion
Comme vous avez pu le remarquer dans ce tutoriel, les Tweens fournissent l'alternative indispensable pour des interpolations de mouvement vraisemblables et dynamiques.
Vous serez parfois amené à créer une application uniquement avec du code, et devrez alors recourir à cette classe.
. Remerciements
Je remercie Arnolem, Roikku, Nico, Thuliad, bref tous mes ainés du projet FLOG, avec lesquels j'apprends un peu plus chaque jour, notamment dans l'environnement flash.
Je remercie Developpez.com, ce site où chacun peut apprendre et aider son prochain.
 
Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur.
La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
|