Vous pouvez décrire une interpolation de mouvement à l'aide de code XML et des classes ActionScript dans le package fl.motion. Adobe Flash CS4 possède une commande « Copy Motion as ActionScript » qui génère du code XML et ActionScript basé sur une interpolation de mouvement du scénario et que vous pouvez utiliser dans d'autres symboles ou d'autres projets. Vous pouvez également écrire votre propre interpolation de mouvement. Tant que les classes fl.motion sont présentes dans votre chemin de classe au moment de la compilation, l'interpolation de mouvement sera appliquée à votre objet d'affichage spécifié. Pour plus d'informations sur les classes de mouvement, consultez le package fl.motion. Les éléments du code XML pris en charge correspondent aux classes et aux propriétés citées dans le Guide de référence du langage ActionScript 3.0.

Afficher les exemples.

Voici la hiérarchie des éléments XML :

<Motion> <Source> <dimensions> <geom:Rectangle /> </dimensions> <transformationPoint> <geom:Point /> </transformationPoint> </Source> <Keyframe> <color> <Color /> </color> <tweens> <SimpleEase /> <CustomEase> <BezierControl /> <BezierNode /> </CustomEase> </tweens> <filters> <filters /> </filters> </Keyframe> </Motion>

Le tableau suivant dresse la liste des éléments et les attributs XML qui peuvent être affectés à un objet de mouvement. Pour plus d'informations sur chaque entrée, consultez les propriétés énumérées dans les classes correspondantes :

Elément Attribut Type Description
Motion     Définit l'occurrence de Motion afin que Flash puisse affecter les propriétés qui caractérisent l'interpolation de mouvement. Voir la classe fl.motion.Motion.
  duration Number Nombre d'images de l'interpolation de mouvement sélectionnée. Voir la propriété fl.motion.MotionBase.duration.
source     Balise parent obligatoire pour l'élément Source. Cette balise n'a aucun attribut, mais le compilateur en a besoin pour traiter l'élément Source et ses attributs.
Source     Contient les propriétés de l'objet visuel d'origine qui est associé au mouvement. Voir la classe fl.motion.Source.
  frameRate Number Le paramètre fps (Images par seconde) du fichier SWF contient l'animation d'origine, copiée à partir de Flash CS4. Cette valeur n'a aucun effet sur l'implémentation d'ActionScript dans un autre fichier SWF. Voir la propriété fl.motion.Source.frameRate.
  x Number Coordonnée X du point de transformation de l'occurrence de symbole située au début de l'interpolation de mouvement d'origine, copiée à partir de Flash CS4.
  y Number Coordonnée Y du point de transformation de l'occurrence de symbole située au début de l'interpolation de mouvement d'origine, copiée à partir de Flash CS4.
  scaleX Number Pourcentage de l'échelle horizontale, sous forme de valeur décimale. Cette valeur est souvent comprise entre 0 et 1, mais peut être supérieure à 1 ou inférieure à 0. Par exemple, vous pouvez régler scaleX sur -1 pour retourner l'objet ou sur 3 pour multiplier sa taille d'origine par 3.
  scaleY Number Pourcentage de l'échelle verticale, sous forme de valeur décimale. Cette valeur est souvent comprise entre 0 et 1, mais peut être supérieure à 1 ou inférieure à 0. Par exemple, vous pouvez régler scaleY sur -1 pour retourner l'objet ou sur 3 pour multiplier sa taille d'origine par 3.
  skewX Number Angle (en degrés) du cisaillement le long de l'axe horizontal. Si les valeurs skewX et skewY sont égales, elles sont remplacées par l'attribut rotation.
  skewY Number Angle (en degrés) du cisaillement le long de l'axe vertical. Si les valeurs skewX et skewY sont égales, elles sont remplacées par l'attribut rotation.
  rotation Number Degrés de la rotation de l'image d'origine.
  elementType String Type de l'objet visuel utilisé dans l'interpolation de mouvement. Les valeurs possibles sont : "movie clip", "button", "graphic", "rectangle object", "oval object", "drawing object", "group", "bitmap", "compiled clip", "video" ou "text".
  symbolName String Nom du symbole dans la bibliothèque du document Adobe Flash CS4, s'il y est présent (car l'objet visuel d'origine n'est pas forcément une occurrence de symbole).
dimensions     Contient les balises utilisant le nom d'espace geom pour décrire le cadre de délimitation et le point de transformation du symbole interpolé.
geom:Rectangle   Objet du package flash.geom. Vous pouvez ajouter des attributs correspondant aux propriétés de l'objet flash.geom.Rectangle. Voici un exemple d'utilisation :

<geom:Rectangle left="7" top="9" width="151.95" height="151.95" />

Les valeurs top et left se rapportent au point d'alignement de l'objet parent (top et left sont définies dans l'espace de coordonnées de l'objet parent).

geom:Point   Objet du package flash.geom. Les coordonnées du point de transformation sont définies sous forme de pourcentage des dimensions du cadre de délimitation (valeurs de l'élément geom:Rectangle). Si le point de transformation correspond au coin supérieur gauche du cadre de délimitation, les coordonnées sont (0, 0). Si le point de transformation correspond au coin supérieur droit du cadre de délimitation, les coordonnées sont (1, 1). Ces valeurs permettent l'application cohérente du point de transformation aux objets dont les proportions et les points d'alignement sont différents. Le point de transformation peut s'éloigner du cadre de délimitation. Dans ce cas, les coordonnées peuvent être inférieures à 0 ou supérieures à 1.
Keyframe     Contient les informations correspondant à une image-clé du scénario.
  blank Boolean Indique que l'image-clé est vide.
  index Number Nombre entier de l'image-clé. La valeur du premier index de l'image-clé est toujours 0. Dans le code XML, les images-clés doivent être indiquées en ordre ascendant par rapport à la valeur d'index.
  label String Chaîne facultative qui décrit l'image-clé et correspond à une étiquette d'image du scénario.
  tweenSync Boolean Active ("true") ou désactive ("false") le paramètre de synchronisation. La synchronisation recalcule le nombre d'images d'une interpolation afin de l'adapter au nombre d'images qui lui sont affectées dans le scénario. Cet attribut n'affecte pas l'animation ActionScript car ce langage ne peut pas contrôler les symboles graphiques. L'attribut XML est utilisé uniquement par les commandes Motion et Paste Motion d'Adobe Flash CS4. La valeur par défaut est true si non présent dans le code XML.
  tweenSnap Boolean Active ("true") ou désactive ("false") le paramètre Snap. Ce paramètre associe un symbole à la trajectoire de mouvement par son point d'alignement. Cet attribut n'affecte pas l'animation ActionScript car ce langage ne peut pas contrôler les symboles graphiques. L'attribut XML est utilisé uniquement par les commandes Motion et Paste Motion d'Adobe Flash CS4. La valeur par défaut est true si non présent dans le code XML.
  x Number Coordonnée X du point central de l'occurrence du symbole à l'image-clé en cours.
  y Number Coordonnée Y du point central de l'occurrence du symbole à l'image-clé en cours.
  scaleX Number Pourcentage de l'échelle horizontale, sous forme de valeur décimale comprise entre 0 et 1. Cette valeur peut être supérieure à 1 ou inférieure à 0. Par exemple, vous pouvez régler scaleX sur -1 pour retourner l'objet ou sur 3 pour multiplier sa taille d'origine par 3.
  scaleY Number Pourcentage de l'échelle verticale, sous forme de valeur décimale comprise entre 0 et 1. Cette valeur peut être supérieure à 1 ou inférieure à 0. Par exemple, vous pouvez régler scaleY sur -1 pour retourner l'objet ou sur 3 pour multiplier sa taille d'origine par 3.
  skewX Number Angle (en degrés) du cisaillement le long de l'axe horizontal. Si les valeurs skewX et skewY sont égales, elles sont remplacées par l'attribut rotation.
  skewY Number Angle (en degrés) du cisaillement le long de l'axe vertical. Si les valeurs skewX et skewY sont égales, elles sont remplacées par l'attribut rotation.
  rotation Number Degrés de la rotation de l'image en cours.
  rotateDirection String Désigne la rotation de l'élément interpolé. Les valeurs possibles sont "auto", "none", "cw", "ccw". La valeur par défaut est "auto" si non présent dans le code XML.
  rotateTimes Number Spécifie le nombre de rotations de l'élément interpolé entre l'image-clé de début et la prochaine image-clé, en plus de la rotation normale. Pour Adobe Flash CS4, cette valeur doit être un entier égal ou supérieur à 0. Cependant, les classes de mouvement autorisent les valeurs décimales.
  tweenScale Boolean Si false, empêche le changement d'échelle pendant une interpolation. La valeur par défaut est true si non présent dans le code XML.
  cacheAsBitmap Boolean La valeur par défaut est false si non présent dans le code XML.
  blendMode String Les valeurs possibles sont "normal", "layer", "multiply", "screen", "overlay", "hardlight", "lighten", "darken", "difference", "add", "subtract", "invert", "alpha", et "erase". La valeur par défaut est "normal" si non présent dans le code XML.
  orientToPath Boolean La valeur par défaut est false si non présent dans le code XML.
Color     Contient des paramètres pour les variations de couleurs. Les occurrences de symboles Flash possèdent cinq modes de couleur : none, alpha, tint, brightness et advanced.

Pour aucune transformation (none), la balise Color est vide, indiquant l'apparence normale.

Pour des transformations alpha, définissez les attributs alphaMultiplier et alphaOffset.

Pour des transformations tint, définissez les attributs tintColor et tintMultiplier.

Pour des transformations brightness, utilisez l'attribut brightness.

Pour des transformations advanced, utilisez les attributs redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffset, greenOffset, blueOffset et alphaOffset.

  brightness Number Pourcentage à appliquer au canal de luminosité entre -1 et 1, où -1 est entièrement noir et 1 entièrement blanc.
  tintColor Hexidecimal Valeur de couleur hexadécimale représentant la couleur à appliquer.
  alphaMultiplier Number Pourcentage d'application du canal alpha, sous forme de valeur décimale comprise entre 0 et 1.
  redMultiplier Number Pourcentage d'application de la couleur, sous forme de valeur décimale comprise entre 0 et 1.
  greenMultiplier Number Pourcentage d'application de la couleur, sous forme de valeur décimale comprise entre 0 et 1.
  blueMultiplier Number Pourcentage d'application de la couleur, sous forme de valeur décimale comprise entre 0 et 1.
  alphaMultiplier Number Valeur décimale comprise entre 0 et 1 et représentant le pourcentage d'application du canal de transparence alpha.
  tintMultiplier Number Valeur décimale comprise entre 0 et 1 et représentant le pourcentage à appliquer avec la valeur tintColor.
  redOffset Number Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de rouge après sa multiplication par la valeur redMultiplier.
  greenOffset Number Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de vert après sa multiplication par la valeur greenMultiplier.
  blueOffset Number Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal de bleu après sa multiplication par la valeur blueMultiplier.
  alphaOffset Number Nombre, compris entre -255 et 255, qui est ajouté à la valeur du canal alpha après sa multiplication par la valeur alphaMultiplier.
tweens     Contient des paramètres pour les variations d'accélération.
SimpleEase     Définit un paramètre d'accélération avec une seule valeur dans toute l'interpolation de mouvement pour toutes les propriétés d'accélération.
  ease Number Valeur d'accélération à appliquer à toutes les propriétés de l'interpolation de mouvement. L'attribut ease est une valeur de pourcentage comprise entre -1 (100% d'accélération) et 1 (100% de décélération). La valeur par défaut est 0, ce qui signifie que l'interpolation a une vitesse constante, sans accélération ni décélération.
  cible Number Lors de l'utilisation des commandes Copy Motion et Paste Motion d'Adobe Flash CS4, l'outil de programmation génère du code XML qui n'inclut aucun attribut target pour l'élément SimpleEase car Flash CS4 applique la même valeur à toutes les propriétés d'accélération. Toutefois, les classes ActionScript 3.0 vous permettent d'appliquer simultanément différentes valeurs SimpleEase aux propriétés individuelles. Les valeurs possibles de target sont les mêmes que pour CustomEase : "position", "scale", "rotation", "color", "filters", "x", "y", "scaleX", "scaleY", "skewX" et "skewY".
CustomEase     Définit une courbe d'accélération personnalisée composée de courbes cubiques Béziers. Elle peut être appliquée à toutes les propriétés simultanément ou vous pouvez définir différentes courbes pour différentes propriétés.

Pour plus d'informations sur les courbes qui représentent les propriétés d'accélération personnalisées, consultez la classe CustomEase.

  cible Number Propriété qui reçoit une valeur personnalisée. Lors de l'utilisation des commandes Copier le mouvement et Coller le mouvement d'Adobe Flash CS4, l'outil de programmation génère ces valeurs possibles pour target : "position", "scale", "rotation", "color", "filters". Les classes de mouvement d'ActionScript 3.0 offrent même davantage de flexibilité. En effet, vous pouvez définir des courbes individuelles pour : "x", "y", "scaleX", "scaleY", "skewX" et "skewY". Si l'attribut target est omis dans le code XML, toutes les propriétés d'accélération sont ciblées ensemble.

Remarque : le code XML omet le premier et le dernier point dans la courbe d'accélération personnalisée. Le premier point doit toujours être (0, 0) (valeur initiale de la propriété interpolée) et le dernier point doit être (1, 1) (valeur finale de la propriété interpolée). Pour maintenir l'efficacité du code et éviter des erreurs, ces valeurs sont omises dans le code XML et sont supposées être implicites.

BezierControl     Point situé par rapport à une courbe et utilisé pour définir celle-ci.
  x Number Coordonnée X du point qui définit une courbe.
  y Number Coordonnée Y du point qui définit une courbe.
BezierNode     Point d'une courbe qui est utilisé pour définir celle-ci.
  x Number Coordonnée X du point d'une courbe.
  y Number Coordonnée Y du point d'une courbe.
filtres     Définit un objet du package flash.filters à utiliser comme élément (par exemple : filters:GlowFilter). Vous pouvez ajouter des attributs qui correspondent à des propriétés de l'objet flash.filters spécifié. Voici un exemple d'utilisation :

<filters:DropShadowFilter quality="1" inner="false" knockout="false" hideObject="false" distance="0" angle="45" color="0x000000" alpha="1" blurX="0" blurY="0" strength="0" />

Voir le package flash.filters.

L'exemple suivant présente le code ActionScript avec XML en ligne décrivant l'interpolation de mouvement d'une occurrence de clip moveShape pour le symbole myShape, lorsqu'il effectue une rotation, se déplace, utilise un paramètre d'accélération personnalisé et modifie les valeurs alpha sur dix images :

import fl.motion.Animator; var moveShape_xml:XML = <Motion duration="10" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*"> <source> <Source frameRate="12" x="41.35" y="91.35" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" instanceName="moveShape" symbolName="myShape"> <dimensions> <geom:Rectangle left="-46.65" top="-61.95" width="133.05" height="133.95"/> </dimensions> <transformationPoint> <geom:Point x="0.49981210071401727" y="0.4998133631952222"/> </transformationPoint> </Source> </source> <Keyframe index="0" rotateTimes="2"> <tweens> <CustomEase> <BezierControl x="0.08650266979261687" y="0.14705453864744866"/> <BezierControl x="0.23675978562091857" y="0.28829454738109694"/> <BezierNode x="0.2689728109485753" y="0.49688733564952436"/> <BezierControl x="0.32093023255813957" y="0.8333333333333333"/> <BezierControl x="0.5988021982960045" y="1.034249160488573"/> <BezierNode x="0.7309082984924317" y="0.8685852488735627"/> <BezierControl x="0.8116279069767443" y="0.767361111111111"/> <BezierControl x="0.910302766164144" y="0.9730908298492431"/> </CustomEase> </tweens> </Keyframe> <Keyframe index="9" x="371.95" y="188"> <color> <Color alphaMultiplier="0.4" alphaOffset="0"/> </color> </Keyframe> </Motion>; var moveShape_animator:Animator = new Animator(moveShape_xml, moveShape); moveShape_animator.play();