You can describe a motion tween using XML and the ActionScript classes in the fl.motion package. Adobe Flash CS4 has a "Copy Motion as ActionScript" command that generates XML and ActionScript based on a motion tween on the Timeline for use on other symbols or in other projects. You can also script your own motion tween. As long as you have the fl.motion classes in your classpath at compile time, the motion tween will be applied to your specified display object. For more information on the motion classes, see the fl.motion package. The elements of the supporting XML correspond to classes and properties in the ActionScript 3.0 Language Reference.

View the examples.

The XML element hierarchy is as follows:

<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>

The following table briefly summarizes the XML elements and attributes that can be assigned to a motion object, for more details about each entry, see the properties listed in the classes that correspond to each element:

Element Attribute Type Description
Motion     Defines the Motion instance so Flash can assign properties that characterize the motion tween. See the fl.motion.Motion class.
  duration Number Number of frames for the selected motion tween. See the fl.motion.MotionBase.duration property.
source     Required parent tag for the Source element. This tag has no attributes, but it is required by the compiler to process the Source element and its attributes.
Source     Contains the properties of the original visual object associated with the motion. See the fl.motion.Source class.
  frameRate Number The frames per second (fps) setting for the SWF file containing the original animation copied from Flash CS4. This value does not have any effect on the ActionScript implementation in a different SWF fle. See the fl.motion.Source.frameRate property.
  x Number The x-coordinate of the transformation point of the symbol instance at the beginning of the original motion tween copied from Flash CS4.
  y Number The y-coordinate of the transformation point of the symbol instance at the beginning of the original motion tween copied from Flash CS4.
  scaleX Number The percentage of horizontal scale as a decimal value. The value is often between 0 and 1, but can be greater than 1 or less than 0. For example, you can set scaleX to -1 to flip the object, or to 3 to make it 3 times the original size.
  scaleY Number The percentage of vertical scale as a decimal value. The value is often between 0 and 1, but can be greater than 1 or less than 0. For example, you can set scaleY to -1 to flip the object, or to 3 to make it 3 times the original size.
  skewX Number The angle (in degrees) of shearing along the horizontal axis. If the skewX and skewY values are equal, they are replaced by the rotation attribute.
  skewY Number The angle (in degrees) of shearing along the vertical axis.If the skewX and skewY values are equal, they are replaced by the rotation attribute.
  rotation Number The degrees of rotation for the initial frame.
  elementType String The type of visual object used in the motion tween. Possible values are: "movie clip", "button", "graphic", "rectangle object", "oval object", "drawing object", "group", "bitmap", "compiled clip", "video", or "text".
  symbolName String Name of the symbol in the Adobe Flash CS4 document's library, if it exists (since the original visual object may not be a symbol instance).
dimensions     Contains the tags using the geom namespace for describing the bounding box and transformation point for the tweened symbol.
geom:Rectangle   An object from the flash.geom package. You can add attributes that correspond to the properties of the flash.geom.Rectangle object. For example:

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

The top and left values are relative to the parent object's registration point (top and left are defined in the parent object's coordinate space.

geom:Point   An object from the flash.geom package. The coordinates of the transformation point are defined as a percentage of the bounding box's dimensions (geom:Rectangle element's values). If the transformation point is the upper-left corner of the bounding box, the coordinates are (0, 0). If the transformation point is the lower-right corner of the bounding box the coordinates are (1, 1). These values allow the transformation point to be applied consistently to objects of different proportions and registration points. The transformation point can lie outside of the bounding box, in which case the coordinates may be less than 0 or greater than 1.
Keyframe     Contains information corresponding to a keyframe on the Timeline.
  blank Boolean Indicates that the Keyframe is empty.
  index Number A unique integer value for the keyframe. The first keyframe index is always 0. Keyframes in the XML must be specified in ascending order of the index value.
  label String An optional string that describes the Keyframe and corresponds to a frame label on the Timeline.
  tweenSync Boolean Toggles the sync setting on ("true") and off ("false"). Sync recalculates the number of frames in a tween to match the number of frames allotted to it on the Timeline. This attribute has no effect on ActionScript animation, because ActionScript cannot control graphic symbols. The XML attribute is only used by Adobe Flash CS4's Copy Motion and Paste Motion commands. Defaults to true if omitted from the XML.
  tweenSnap Boolean Toggles the Snap setting on ("true") and off ("false"). Snap attaches a symbol to the motion path by its registration point. This attribute has no effect on ActionScript animation, because ActionScript cannot control graphic symbols. The XML attribute is only used by Adobe Flash CS4's Copy Motion and Paste Motion commands. Defaults to true if omitted from the XML.
  x Number The x-coordinate of the center point of the symbol instance at the current keyframe.
  y Number The y-coordinate of the center point of the symbol instance at the current keyframe.
  scaleX Number The percentage of horizontal scale as a decimal value between 0 and 1. The value is often between 0 and 1, but can be greater than 1 or less than 0. For example, you can set scaleX to -1 to flip the object, or to 3 to make it 3 times the original size.
  scaleY Number The percentage of vertical scale as a decimal value between 0 and 1. The value is often between 0 and 1, but can be greater than 1 or less than 0. For example, you can set scaleY to -1 to flip the object, or to 3 to make it 3 times the original size.
  skewX Number The angle (in degrees) of shearing along the horizontal axis. If the skewX and skewY values are equal, they are replaced by the rotation attribute.
  skewY Number The angle (in degrees) of shearing along the vertical axis.If the skewX and skewY values are equal, they are replaced by the rotation attribute.
  rotation Number The degrees of rotation for the current frame.
  rotateDirection String Specifies how the tweened element rotates. Possible values are "auto", "none", "cw", "ccw". Defaults to "auto" if omitted from the XML.
  rotateTimes Number Specifies the number of times the tweened element rotates between the starting keyframe and the next keyframe in addition to the normal rotation. Adobe Flash CS4 requires the value to be an integer of 0 or greater value, but the motion classes allow decimal values.
  tweenScale Boolean If false, prevents the scale from changing during a tween. Defaults to true if omitted from the XML.
  cacheAsBitmap Boolean Defaults to false if omitted from the XML.
  blendMode String Possible values are "normal", "layer", "multiply", "screen", "overlay", "hardlight", "lighten", "darken", "difference", "add", "subtract", "invert", "alpha", and "erase". Defaults to "normal" if omitted from the XML.
  orientToPath Boolean Defaults to false if omitted from the XML.
Color     Contains settings for color variations. Flash symbol instances have five color modes: none, alpha, tint, brightness and advanced.

For no transformation (none), the Color tag is empty, indicating the normal appearance.

For alpha transformations, set the alphaMultiplier and alphaOffset attributes.

For tint transformations, set the tintColor and tintMultiplier attributes.

For brightness transformations, use the brightness attribute.

For advanced transformations, use the redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffset, greenOffset, blueOffset, and alphaOffset attributes.

  brightness Number The percentage to apply the brightness channel between -1 and 1, where -1 is completely black and 1 is completely white
  tintColor Hexidecimal A hexidecimal color value representing the color to apply.
  alphaMultiplier Number The percentage to apply the alpyha channel, as a decimal value between 0 and 1.
  redMultiplier Number The percentage to apply the color, as a decimal value between 0 and 1.
  greenMultiplier Number The percentage to apply the color, as a decimal value between 0 and 1.
  blueMultiplier Number The percentage to apply the color, as a decimal value between 0 and 1.
  alphaMultiplier Number A decimal value between 0 and 1 representing a percentage to apply the alpha transparency channel.
  tintMultiplier Number A decimal value between 0 and 1 representing a percentage to apply with the tintColor value.
  redOffset Number A number from -255 to 255 that is added to the red channel value after it has been multiplied by the redMultiplier value.
  greenOffset Number A number from -255 to 255 that is added to the green channel value after it has been multiplied by the greenMultiplier value.
  blueOffset Number A number from -255 to 255 that is added to the blue channel value after it has been multiplied by the blueMultiplier value.
  alphaOffset Number A number from -255 to 255 that is added to the alpha channel value after it has been multiplied by the alphaMultiplier value.
tweens     Contains settings for easing variations.
SimpleEase     Defines an easing setting with a single value throughout the motion tween for all easing properties.
  ease Number The easing value to apply to all properties of the motion tween. The ease attribute is a percentage value between -1 (100% ease in or acceleration) and 1 (100% ease out or deceleration). The default value is 0, which means that the tween animates at a constant speed, without acceleration or deceleration.
  target Number When using Adobe Flash CS4's Copy Motion and Paste Motion commands, the authoring tool generates XML that does not include a target attribute for the SimpleEase element because Flash CS4 applies the same value to all ease properties. However, the ActionScript 3.0 classes allow you to apply different SimpleEase values to individual properties at the same time. The possible values for target are the same as for CustomEase: "position", "scale", "rotation", "color", "filters", "x", "y", "scaleX", "scaleY", "skewX", and "skewY".
CustomEase     Defines a custom easing curve composed of cubic Bezier curves. It can be applied to all properties at once, or you can define different curves for different properties.

For more information about the curves that represent custom ease properties, see the CustomEase class.

  target Number The property that is assigned a custom value. When using Adobe Flash CS4's Copy Motion and Paste Motion commands, the authoring tool generates these possible values for target: "position", "scale", "rotation", "color", "filters". The ActionScript 3.0 motion classes allow even more flexibility, you can define individual curves for: "x", "y", "scaleX", "scaleY", "skewX", and "skewY". If the "target" attribute is omitted from the XML, all ease properties are targeted together.

Note:The XML omits the first and last points on the custom easing curve. The first point must always be (0, 0) (the starting value of the tweened property), and the last point must be (1, 1) (the ending value of the tweened property). To keep the code efficient, and to avoid possible errors these values are omitted from the XML and assumed to be implicit.

BezierControl     A point relative to a curve that is used to define the curve.
  x Number The x-coordinate of the point for defining a curve.
  y Number The y-coordinate of the point for defining a curve.
BezierNode     A point on a curve that is used to define the curve.
  x Number The x-coordinate of the point on a curve.
  y Number The y-coordinate of the point on a curve.
filters     Defines an object from the flash.filters package to use as an element (for example: filters:GlowFilter). You can add attributes that correspond to the properties of the specified flash.filters object. For example:

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

See the flash.filters package.

The following example shows the ActionScript with inline XML describing the motion tween of a moveShape movie clip instance for the symbol myShape as it rotates, moves, uses a custom ease setting and changes alpha values over ten frames:

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();