15 April 2007
Pour aborder au mieux cet article, vous devez disposer de connaissances élémentaires sur l'environnement de création Flash et d'une expérience préalable de la programmation ActionScript.
Débutant
Lorsque vous créez un nouveau fichier dans Adobe Flash CS3 Professional, vous travaillez par défaut dans le nouvel environnement ActionScript 3.0. ActionScript 3.0 offre des performances supérieures et un ensemble standardisé de classes d'objets accessibles dans le langage de script ActionScript 3.0. Cela inclut entre autres les classes de transition, d'accélération et Tween qui offrent une prise en charge de bas niveau du contrôle de l'environnement Flash.
Cet article vous montre à quel point il est facile d'utiliser les classes Tween et TransitionManager, même si vous ne maîtrisez pas ActionScript. Vous utiliserez ces classes avec des composants et séquences vidéo pour ajouter des animations à vos fichiers SWF.
Vous explorerez également la nouvelle fonction Copier le mouvement au format ActionScript 3.0 et travaillerez avec des animations XML.
Les classes prédéfinies d'ActionScript donnent accès à divers types de fonctions et d'objets dans Flash. Vous retrouverez, dans ActionScript 3.0, les classes Tween, TransitionManager et d'accélération qui vous permettent d'ajouter de façon dynamique des animations et des transitions à votre séquence vidéo. Ces classes s'utilisent quasiment de la même manière qu'avec ActionScript 2.0. La principale différence entre les deux versions est que le package ActionScript est maintenant 'fl', et non plus 'mx'.
Cette page présente les options d'interpolation, de transition et d'accélération disponibles dans ActionScript 3.0.
Remarque : Pour plus d'informations sur les classes Tween et TransitionManager dans ActionScript 2.0, reportez-vous à la version précédente de cet article, Utilisation des classes d'interpolation et de transition dans Flash MX.
Si vous travaillez avec les classes de transition ou la classe Tween, vous devrez importer le package de transitions ainsi que le package d'accélération, si vous prévoyez de l'utiliser avant de commencer la programmation. Ajoutez ce code en haut de la fenêtre Script, dans le panneau Actions :
import fl.transitions.*;
import fl.transitions.easing.*;
Vous pouvez maintenant accéder directement aux classes d'objets tandis que vous programmez et gagner ainsi en espace horizontal.
Conseil : Si vous n'avez pas encore d'expérience dans la programmation en ActionScript, sachez que vous devrez commencer par effectuer de nombreuses opérations de copier-coller. Lorsque vous repérez un extrait de code qui vous semble utile, copiez-le dans votre fichier et saisissez le texte pour créer votre script.
Les transitions sont des animations que vous pouvez appliquer à des séquences vidéo pour les faire entrer ou sortir de l'écran. ActionScript 3.0 comprend 10 classes de transition différentes, que vous pouvez personnaliser à l'aide des méthodes d'accélération et de plusieurs options de paramétrage.
Flash CS3 Professional inclut les transitions suivantes, utilisables avec la classe TransitionManager :
Chaque transition possède des personnalisations légèrement différentes que vous pouvez appliquer à l'animation.
La classe TransitionManager est l'objet gestionnaire qui interagit avec les transitions.
Le code suivant montre comment créer une transition Effacement :
import fl.transitions.*;
import fl.transitions.easing.*;
// apply wipe transition
TransitionManager.start(img1_mc, {type:Wipe, direction:Transition.IN, duration:2, easing:None.easeNone, startPoint:1});
Le code ci-dessus suppose la présence sur la scène d'une instance de séquence vidéo nommée 'img1_mc'. Ces quelques lignes de code suffisent pour créer un effet d'effacement dans votre vidéo.
Notez que vous passez dans l'instance de la cible et d'un objet contenant des paramètres de transition. Les paramètres comprennent toujours les propriétés de type, de direction, de durée et d'accélération, ainsi que d'autres propriétés de transition éventuellement requises.
Pour plus d'informations sur la classe TransitionManager, reportez-vous à la section de la documentation d'aide de Flash ci-après : ActionScript 3.0 Language and Component Reference > All Classes > TransitionManager class.
L'accélération est en fait une accélération ou une décélération progressive dans une animation. Par exemple, une balle peut accélérer progressivement au début d'une animation, puis décélérer à la fin de l'animation jusqu'à s'arrêter complètement. L'ajout d'effets d'accélération contribue à donner un aspect plus réaliste à vos animations.
Flash propose six classes d'accélération utilisables avec les classes Tween et TransitionManager :
Les six classes d'accélération ci-dessus possèdent chacune trois méthodes d'accélération :
Remarque : La classe None contient la méthode 'easeNone' déjà vue dans l'exemple de code TransitionManager ci-dessus.
Si vous souhaitez ouvrir ces classes dans Flash ou lire le code dans votre éditeur ActionScript, vous trouverez les fichiers de classe dans <language> Configuration\ActionScript 3.0\Classes\fl\.
Pour plus d'informations sur la classe TransitionManager, reportez-vous à la section de la documentation d'aide de Flash suivante : ActionScript 3.0 Language and Component Reference > All Packages > fl.transitions.easing package.
La classe Tween facilite le déplacement, le redimensionnement et le fondu des séquences vidéo sur la scène, à l'instar d'une interpolation créée avec le scénario.
Supposez que vous vouliez déplacer une séquence vidéo sur la scène. Vous disposeriez des options suivantes :
onEnterFrame pour améliorer l'animation.setInterval() pour appeler une fonction à intervalles réguliers. Si vous choisissez la classe Tween, utilisez le code ActionScript suivant :
import fl.transitions.*;
import fl.transitions.easing.*;
var myTween:Tween = new Tween(ball_mc, "x", Elastic.easeOut, 0, 300, 3, true);
L'exemple de code ActionScript ci-dessus crée une nouvelle instance de la classe Tween, qui anime la séquence vidéo ball_mc sur la scène le long de l'axe X (de gauche à droite). La séquence vidéo s'anime de 0 à 300 pixels en trois secondes et le code ActionScript applique une méthode d'accélération élastique. Cela signifie que la balle s'étend au-delà de 300 pixels sur l'axe X avant de s'animer avec un effet cinétique fluide.
La liste suivante présente les paramètres du constructeur Tween :
obj: reference - the object which the Tween targets
prop: string - name of the property (in obj) that will be affected
func: function – the easing function that will be applied to the tween
begin: number - the starting value of prop; the initial value of the property
duration: number - the length of time of the motion; set to infinity if the value is negative or omitted
useSeconds: boolean - a flag specifying whether to use seconds instead of frames Tween (obj, prop, func, begin, finish, duration, useSeconds)
Le premier exemple de code ci-dessus montre quels paramètres utiliser pour définir la durée de l'animation en secondes. Vous pouvez également remplacer les secondes par des images et appliquer un effet fondu au symbole sur plusieurs images. Pour définir la durée en images, et non en secondes, dans la classe Tween, changez le paramètre final, useSeconds, en remplaçant true par false. En définissant le paramètre sur true, vous indiquez à Flash que la durée spécifiée est mesurée en secondes. Si vous définissez le paramètre sur false, la durée est le nombre d'images que vous souhaitez utiliser pour l'interpolation. Par exemple, examinons le code suivant :
import fl.transitions.Tween;
import fl.transitions.easing.*;
var myTween:Tween = new Tween(ball_mc, "alpha", Strong.easeIn, 100, 0, 24, false);
L'exemple de code ci-dessus applique un fondu à l'instance ball_mc en utilisant la méthode d'accélération Strong.easeIn . Au lieu de durer trois secondes, le fondu de l'instance se déroule sur 24 images. L'utilisation d'images au lieu de secondes vous fait certes bénéficier d'une plus grande flexibilité, mais gardez à l'esprit que la durée dépend de la cadence d'images du document Flash courant. Si la cadence d'images de votre document Flash est de 12 images par seconde (i/s), l'extrait de code ci-dessus applique un fondu de deux secondes à l'instance (24 images/12 i/s = 2 secondes). En revanche, si la cadence d'images est de 24 i/s, le même code applique un fondu d'une seconde à l'instance (24 images /24 i/s = 1 seconde). Si vous mesurez la durée à l'aide d'images, vous pouvez changer la vitesse de votre animation de manière significative en changeant la cadence d'images du document, et ce sans modifier votre code ActionScript.
Pour plus d'informations sur la classe Tween, reportez-vous à la section de la documentation d'aide de Flash suivante : ActionScript 3.0 Language and Component Reference > All Classes > Tween class.
Vous pouvez utiliser les classes de transition et Tween pour ajouter des animations à des séquences vidéo et des composants à l'aide d'ActionScript. Si vous n'utilisez pas la classe de transition ou la classe Tween, vous devrez écrire votre propre code pour animer vos séquences vidéo ou modifier leurs valeurs alpha et leurs coordonnées. Si vous souhaitez ajouter des effets d'accélération à votre animation, la programmation en ActionScript et les équations mathématiques peuvent rapidement devenir complexes. Toutefois, si vous souhaitez modifier l'accélération d'une animation particulière et que vous utilisez ces classes prédéfinies, vous pouvez choisir un autre type de classe d'accélération au lieu d'essayer de déterminer les nouvelles équations mathématiques nécessaires pour créer une animation fluide.
Pour animer un zoom avant sur une séquence vidéo placée sur la scène à l'aide de la classe de transition, procédez comme suit :
fl.transitions.*;
fl.transitions.easing.*;
TransitionManager.start(img1_mc, {type:Zoom, direction:0, duration:3, easing: Bounce.easeOut});
duration (dans l'exemple de code ci-dessus) d'une seconde à deux ou trois secondes.Vous remarquerez peut-être que l'image s'ancre dans l'angle supérieur gauche et s'agrandit vers l'angle inférieur droit. Si vous souhaitez que les images effectuent un zoom avant à partir du centre, et non à partir d'un angle ancré, vous devrez modifier le point d'alignement du symbole lors de la conversion de l'image à partir d'un bitmap (voir l'étape 2 ci-dessus). Procédez comme suit :
fl.transitions.*;
fl.transitions.easing.*;
TransitionManager.start(img1_mc, {type:Zoom, direction:0, duration:3, easing: Bounce.easeOut});
Si vous avez modifié la durée à l'étape 7 ci-dessus, modifiez cet exemple de code afin d'utiliser la même valeur.
Comme vous pouvez le constater, la création d'animations complexes est extrêmement simplifiée par l'utilisation de transitions. Vous n'avez pas besoin de créer d'interpolations de mouvement ou de forme sur le scénario, ni d'effectuer des calculs mathématiques complexes pour créer des méthodes d'accélération.
Remarque : Certaines transitions sont sensibles à l'emplacement du point d'alignement dans la séquence vidéo. Le déplacement du point d'alignement peut avoir un impact important sur l'aspect de l'animation dans un fichier SWF.
Pour animer un objet à l'aide de la classe Tween, procédez comme suit :
import fl.transitions.*;
import fl.transitions.easing.*;
function finishHandler(event:TweenEvent):void
{
// Place your actions here
trace("MOTION_FINISH time = "+event.time);
}
var myTween:Tween = new Tween(img1_mc, "y", Elastic.easeOut, 0, 300, 3, true);
myTween.addEventListener(TweenEvent.MOTION_FINISH, finishHandler);
Remarque : Cet exemple de code montre comment créer une interpolation simple avec une fonction de gestionnaire d'événement assignée pour écouter l'animation. Les événements sont des ancrages temporels qui vous permettent de répondre à divers points dans l'animation. Vous pouvez répondre aux événements suivants : motionChange, motionFinish, motionLoop, motionResume, motionStart et motionStop.
img1_mc sur la scène.Pour plus d'informations sur les événements de la classe Tween, reportez-vous à la section de la documentation d'aide de Flash ci-après : ActionScript 3.0 Language and Component Reference > All Classes > Tween class > Events.
Vous voulez que la balle continue à se déplacer une fois l'animation initiale terminée ? Vous disposez d'au moins deux solutions pour cela. La première, sans doute la plus évidente, consiste à animer à nouveau la balle à l'aide de l'événement motionFinished . Toutefois, la classe Tween offre une solution plus simple : la méthode continueTo() . La méthode continueTo() demande à l'animation interpolée de continuer, en passant de sa valeur actuelle à une nouvelle valeur. Cette méthode est illustrée par le code ActionScript suivant :
import fl.transitions.Tween;
import fl.transitions.easing.*;
var ball_tween:Object = new Tween(ball_mc, "x", Regular.easeIn, 0, 300, 3, true);
function handleFinish(event:TweenEvent):void {
ball_tween.continueTo(0, 3);
};
ball_tween.addEventListener(TweenEvent.MOTION_FINISH, handleFinish);
Une fois l'interpolation initiale terminée, la séquence vidéo ball_mc s'interpole à sa position originale (0 pixel).
Seulement deux arguments sont transmis à la méthode continueTo() , au lieu de sept pour la méthode Tween . Les cinq arguments manquants (obj, prop, func, beginet useSeconds) de la méthode continueTo() utilisent les arguments définis plus tôt dans l'appel de la classe Tween. Lorsque vous appelez la méthode continueTo() , vous supposez que les arguments obj, prop, func (type d'accélération) et useSeconds sont les mêmes que dans l'appel précédent de la classe Tween. La méthode continueTo() utilise la valeur finish de l'appel de la classe Tween, au lieu de spécifier une valeur pour l'argument begin .
Vous pouvez également créer une animation sans fin faisant des allers et retours le long de l'axe X. La classe Tween gère également ce type d'animation avec la méthode opportunément nommée yoyo() . La méthode yoyo() attend que l'événement motionFinished s'exécute, puis inverse les paramètres begin et finish . L'animation redémarre alors, comme illustré dans l'exemple ci-dessous.
import fl.transitions.Tween;
import fl.transitions.easing.*;
var box_tween:Tween = new Tween(box_mc, "x", Regular.easeInOut, 0, stage.stageWidth, 3, true);
function handleFinish(event:TweenEvent):void {
box_tween.yoyo();
}
box_tween.addEventListener(TweenEvent.MOTION_FINISH, handleFinish);
box_mc . Le code de l'étape 8 a été révisé pour refléter ce changement :import fl.transitions.Tween;
import fl.transitions.easing.*;
var box_tween:Tween = new Tween(box_mc, "x", Regular.easeInOut, 0, stage.stageWidth - box_mc.width, 3, true);
function handleFinish(event:TweenEvent):void {
box_tween.yoyo();
}
box_tween.addEventListener(TweenEvent.MOTION_FINISH, handleFinish);
Testez à nouveau l'animation. Le cadre s'arrête maintenant avant de sortir de la scène.
Parmi les nouveautés de Flash CS3 Professional, citons la possibilité de copier une interpolation de mouvement basée sur un scénario et de la coller sous forme de code ActionScript 3.0. Vous pouvez ainsi créer des commandes d'animation basées sur des scripts dynamiques, même si vous ne maîtrisez pas ActionScript.
Commande Copier le mouvement au format ActionScript 3.0
La commande Copier le mouvement au format ActionScript 3.0 génère une définition XML de l'interpolation sélectionnée et définit les classes nécessaires pour recréer l'animation en ActionScript. Les possibilités de création et de réapplication d'animations et d'effets offertes par cette fonctionnalité sont illimitées.
La commande Copier le mouvement au format ActionScript 3.0 peut capturer les propriétés d'une interpolation de mouvement suivantes :
Remarque : Si un guide de mouvement et une accélération personnalisée sont appliqués à une interpolation, la commande Copier le mouvement au format ActionScript 3.0 crée des images-clés pour chaque image et applique les valeurs correctes à chaque image-clé. Si vous supprimez le guide de mouvement, le même code XML décrit l'accélération personnalisée des deux commandes.
Le processus de création d'une animation à l'aide de la commande Copier le mouvement au format ActionScript 3.0 est simple. Commencez par créer une interpolation visuellement le long du scénario, en créant tous les effets désirés. En cliquant sur l'interpolation avec le bouton droit de la souris, vous pouvez sélectionner l'option Copier le mouvement au format ActionScript 3.0 pour copier toutes les propriétés de l'interpolation dans le presse-papiers.
Comme vous l'avez compris à partir des informations ci-dessus, la création de l'interpolation et la copie du mouvement au format ActionScript ne sont qu'un début. Vous obtenez des éléments XML de mouvement et une instance Animator, que vous pouvez ensuite réutiliser dans d'autres projets.
Bien que la génération de données XML à l'aide de la commande Copier le mouvement au format ActionScript 3.0 soit extrêmement simple, vous disposez d'une autre possibilité tout aussi efficace : écrire le script de votre propre interpolation de mouvement.
Voici un exemple de format XML de mouvement :
var my_mc_xml:XML = <Motion duration="20" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
<source>
<Source frameRate="12" x="70" y="77" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="Symbol 1">
<dimensions>
<geom:Rectangle left="-44" top="-44" width="88" height="88"/>
</dimensions>
<transformationPoint>
<geom:Point x="0.5" y="0.5"/>
</transformationPoint>
</Source>
</source>
<Keyframe index="0" tweenSnap="true" tweenSync="true">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="19" x="357.9" y="242.05" scaleX="2.143" skewX="75" skewY="137.2">
<color>
<Color alphaMultiplier="0.37"/>
</color>
</Keyframe>
</Motion>;
Ne vous laissez pas impressionner par l'exemple de code ci-dessus ! Il a été généré à l'aide de la commande Copier le mouvement au format ActionScript 3.0. L'écriture de ce script n'a nécessité aucune compétence particulière en programmation. Il s'agit d'un excellent moyen de se familiariser avec les détails du format XML. Parcourez le code et vous serez surpris de découvrir à quelle vitesse les choses se mettent en place.
Pour plus d'informations sur le format XML des mouvements, reportez-vous à la section suivante des pages d'aide de Flash : ActionScript 3.0 Language and Components Reference > Appendices > Motion XML Elements.
La classe Animator est une nouveauté d'ActionScript 3.0. Elle applique une description XML d'interpolation de mouvement à un objet affiché sur la scène. Une instance d'animateur est automatiquement générée quand la commande Copier le mouvement au format ActionScript 3.0 est utilisée pour copier-coller une interpolation sous forme de code. Il est également possible d'écrire directement son script en ActionScript pour renforcer le contrôle de l'animation et étendre la gestion des événements.
Le code de base nécessaire pour utiliser la classe Animator est présenté dans l'exemple suivant :
import fl.motion.Animator;
var my_mc_xml:XML = <Motion>…<Motion>
var my_mc_animator:Animator = new Animator(my_mc_xml, my_mc);
my_mc_animator.play();
Remarque : La valeur my_mc_xml serait en réalité une version complète du format XML du mouvement, mais le script a été tronqué afin de mettre l'accent sur le code Animator principal. Notez que le constructeur Animator accepte deux paramètres : la définition XML de l'animation et le nom d'instance de l'objet cible.
Pour les besoins de la démonstration, nous utiliserons la commande Copier le mouvement au format ActionScript 3.0 pour générer des données XML et du code, puis nous les appliquerons dans un autre fichier.
Pour créer une animation ActionScript 3.0 :
import fl.motion.Animator;
var my_mc_xml:XML = <Motion duration="20" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
<source>
<Source frameRate="12" x="70" y="77" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="Symbol 1">
<dimensions>
<geom:Rectangle left="-44" top="-44" width="88" height="88"/>
</dimensions>
<transformationPoint>
<geom:Point x="0.5" y="0.5"/>
</transformationPoint>
</Source>
</source>
<Keyframe index="0" tweenSnap="true" tweenSync="true">
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="19" x="357.9" y="242.05" scaleX="2.143" skewX="75" skewY="137.2">
<color>
<Color alphaMultiplier="0.37"/>
</color>
</Keyframe>
</Motion>;
var my_mc_animator:Animator = new Animator(my_mc_xml, my_mc);
my_mc_animator.play();
L'exemple suivant vous montre comment créer une classe ActionScript simple applicable à n'importe quelle séquence vidéo de la Bibliothèque pour créer une transition personnalisée.
Pour créer une animation réutilisable sous forme de fichier ActionScript 3.0 :
package
{
import fl.motion.Animator;
import flash.display.MovieClip;
public class FadeIn extends MovieClip
{
private var my_mc_xml:XML;
private var my_mc_animator:Animator;
public function FadeIn()
{
my_mc_xml = <Motion duration="11" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
<source>
<Source frameRate="12" x="271.45" y="194.5" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="Symbol 1">
<dimensions>
<geom:Rectangle left="-150.45" top="-136.5" width="300.95" height="273"/>
</dimensions>
<transformationPoint>
<geom:Point x="0.49991692972254526" y="0.5"/>
</transformationPoint>
</Source>
</source>
<Keyframe index="0" rotateDirection="cw" rotateTimes="1" tweenSnap="true" tweenSync="true">
<color>
<Color alphaMultiplier="0"/>
</color>
<tweens>
<SimpleEase ease="0"/>
</tweens>
</Keyframe>
<Keyframe index="10">
<color>
<Color/>
</color>
</Keyframe>
</Motion>;
my_mc_animator = new Animator(my_mc_xml,this);
my_mc_animator.play();
}
}
}
Remarque : L'étape ci-dessus associe le fichier ActionScript externe à la séquence vidéo. Cette méthode permet d'appliquer rapidement du code à des séquences vidéo. Elle est efficace, car elle vous permet de modifier le code dans un emplacement le fichier texte et de l'appliquer à autant de séquences vidéo que vous le souhaitez via leur propriété Liaison.
Remarque : Le langage et le format de fichier ActionScript 3.0 excluent certaines fonctions ActionScript 2.0 liées à l'animation. En particulier, les comportements d'écran fichiers et transitions et les propriétés d'accélération des composants ne sont pas disponibles dans ActionScript 3.0.
Cet article démontre à quel point il est facile de créer une animation à l'aide d'ActionScript. Notez que les étapes de ce didacticiel ne nécessitent aucune équation mathématique complexe. Vous êtes maintenant prêt à agrémenter vos documents Flash d'effets intéressants sans vous compliquer la tâche. Pour plus d'informations sur l'utilisation d'ActionScript 3.0, consultez le Pôle technologique d'ActionScript, où vous trouverez des didacticiels en ligne, des extraits de livres et des fichiers exemples. Pour rechercher une syntaxe ou des informations d'utilisation, consultez le document Spécification du langage ActionScript 3.0.
Essayez de créer différents types d'animations et voyez comment réutiliser les interpolations dans vos projets. À mesure que vous vous familiariserez avec l'utilisation des classes de transition et Tween, et de la commande Copier le mouvement au format ActionScript 3.0, explorez de manière plus approfondie les possibilités de génération dynamique de définitions XML de mouvements et découvrez comment appliquer ces stratégies lorsque vous développez vos propres classes ActionScript 3.0.
Flash User Forum |
More |
| 04/23/2012 | Auto-Save and Auto-Recovery |
|---|---|
| 04/23/2012 | Open hyperlinks in new window/tab/pop-up ? |
| 04/21/2012 | PNG transparencies glitched |
| 04/01/2010 | Workaround for JSFL shape selection bug? |
Flash Cookbooks |
More |
| 02/13/2012 | Randomize an array |
|---|---|
| 02/11/2012 | How to create a Facebook fan page with Flash |
| 02/08/2012 | Digital Clock |
| 01/18/2012 | Recording webcam video & audio in a flv file on local drive |