您可以使用 fl.motion 包中的 XML 类和 ActionScript 类来描述补间动画。Adobe Flash CS4 提供了一个“将动作复制为 ActionScript”命令,基于时间轴上的补间动画生成 XML 和 ActionScript,以便在其它元件或其它项目中使用。您还可以编写自己的补间动画脚本。只要在编译时类路径中有 fl.motion 类,补间动画就会应用到指定的显示对象。有关动画类的详细信息,请参阅 fl.motion 包。支持 XML 的元素对应于《ActionScript 3.0 语言参考》中的类和属性。

请参看示例。

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>

下表简要总结了可以为动画对象分配的 XML 元素和属性。有关每个条目的详细信息,请参阅与各个元素对应的类中列出的属性:

元素 属性 类型 说明
Motion     定义 Motion 实例,使 Flash 能够分配用于勾画补间动画特征的属性。请参阅 fl.motion.Motion 类。
  duration Number 所选补间动画的帧数。请参阅 fl.motion.MotionBase.duration 属性。
source     Source 元素所需的父标签。此标签没有属性,但编译器需要使用它来处理 Source 元素及其属性。
Source     包含与动画相关的原始可视对象的属性。请参阅 fl.motion.Source 类。
  frameRate Number 为包含从 Flash CS4 复制的原始动画的 SWF 文件设置的每秒帧数 (fps)。该值对其它 SWF 文件的 ActionScript 实现没有任何影响。请参阅 fl.motion.Source.frameRate 属性。
  x Number 位于从 Flash CS4 复制的原始补间动画的开始位置处的元件实例变形点的 x 坐标。
  y Number 位于从 Flash CS4 复制的原始补间动画的开始位置处的元件实例变形点的 y 坐标。
  scaleX Number 小数值形式的水平缩放百分比。此值通常介于 0 和 1 之间,但也可以大于 1 或小于 0。例如,可以将 scaleX 设置为 -1 来翻转对象,或设置为 3 以使原始对象放大 3 倍。
  scaleY Number 小数值形式的垂直缩放百分比。此值通常介于 0 和 1 之间,但也可以大于 1 或小于 0。例如,可以将 scaleY 设置为 -1 来翻转对象,或设置为 3 以使原始对象放大 3 倍。
  skewX Number 沿水平轴剪切的角度(以度为单位)。如果 skewXskewY 值相等,就可以使用 rotation 属性替换它们。
  skewY Number 沿垂直轴剪切的角度(以度为单位)。如果 skewXskewY 值相等,就可以使用 rotation 属性代替它们。
  rotation Number 初始帧的旋转角度。
  elementType String 补间动画中使用的可视对象的类型。可能的值包括:“movie clip”、“button”、“graphic”、“rectangle object”、“oval object”、“drawing object”、“group”、“bitmap”、“compiled clip”、“video”或“text”。
  symbolName String Adobe Flash CS4 文档库中的元件名称(如果该元件存在 - 因为原始可视对象可能不是元件实例)。
dimensions     包含一些标签,这些标签使用 geom 命名空间描述补间元件的边框和变形点。
geom:Rectangle   flash.geom 包中的对象。 可以添加与 flash.geom.Rectangle 对象的属性相对应的属性。例如:

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

topleft 值随父对象的注册点而变化(topleft 是在父对象的坐标空间中定义的)。

geom:Point   flash.geom 包中的对象。 变形点的坐标定义为边框尺寸(geom:Rectangle 元素的值)的百分比。如果变形点位于边框的左上角,则坐标为 (0, 0)。如果变形点位于边框的右下角,则坐标为 (1, 1)。这样的值使具有不同比例和注册点的对象都能一致地应用变形点。变形点可以位于边框之外,在这种情况下,坐标可能小于 0 或大于 1。
Keyframe     包含与时间轴上的关键帧对应的信息。
  blank Boolean 指示关键帧为空。
  index Number 关键帧的唯一整数值。第一个关键帧索引始终为 0。必须以升序排列的索引值来指定 XML 中的关键帧。
  label String 一个用于描述关键帧的可选字符串,与时间轴上的帧标签相对应。
  tweenSync Boolean 将“同步”设置切换为打开("true")或关闭("false")。“同步”会重新计算补间的帧数以与在时间轴上分配给补间的帧数相匹配。因为 ActionScript 无法控制图形元件,所以此属性对 ActionScript 动画没有影响。XML 属性仅供 Adobe Flash CS4 的“复制动画”和“粘贴动画”命令使用。如果在 XML 中省略,则默认值为 true
  tweenSnap Boolean 将“捕捉”设置切换为打开("true")或关闭("false")。“捕捉”会根据元件的注册点将元件附加到运动路径。因为 ActionScript 无法控制图形元件,所以此属性对 ActionScript 动画没有影响。XML 属性仅供 Adobe Flash CS4 的“复制动画”和“粘贴动画”命令使用。如果在 XML 中省略,则默认值为 true
  x Number 当前关键帧处元件实例的中心点的 x 坐标。
  y Number 当前关键帧处元件实例的中心点的 y 坐标。
  scaleX Number 以 0 和 1 之间的小数值表示的水平缩放百分比。此值通常介于 0 和 1 之间,但也可以大于 1 或小于 0。例如,可以将 scaleX 设置为 -1 来翻转对象,或设置为 3 以使原始对象放大 3 倍。
  scaleY Number 以 0 和 1 之间的小数值表示的垂直缩放百分比。该值通常介于 0 和 1 之间,但也可以大于 1 或小于 0。例如,可以将 scaleY 设置为 -1 来翻转对象,或设置为 3 以使原始对象放大 3 倍。
  skewX Number 沿水平轴剪切的角度(以度为单位)。如果 skewXskewY 值相等,就可以使用 rotation 属性替换它们。
  skewY Number 沿垂直轴剪切的角度(以度为单位)。如果 skewXskewY 值相等,就可以使用 rotation 属性代替它们。
  rotation Number 当前帧的旋转角度。
  rotateDirection String 指定补间元素如何旋转。可能值有“auto”、“none”、“cw”和“ccw”。如果在 XML 中省略,则默认值为“auto”。
  rotateTimes Number 指定在开始关键帧与下一关键帧之间,除正常旋转外,补间元素的旋转次数。Adobe Flash CS4 要求此值为大于或等于 0 的整数,但动画类允许使用小数值。
  tweenScale Boolean 如果为 false,则阻止在补间期间更改缩放。如果在 XML 中省略,则默认值为 true
  cacheAsBitmap Boolean 如果在 XML 中省略,则默认值为 false
  blendMode String 可能值有“normal”、“layer”、“multiply”、“screen”、“overlay”、“hardlight”、“lighten”、“darken”、“difference”、“add”、“subtract”、“invert”、“alpha”和“erase”。如果在 XML 中省略,则默认值为“normal”。
  orientToPath Boolean 如果在 XML 中省略,则默认值为 false
Color     包含颜色变体的设置。Flash 元件实例有五种颜色模式:nonealphatintbrightnessadvanced

对于不转换(none)模式,Color 标签为空,指示正常外观。

对于 alpha 转换,请设置 alphaMultiplieralphaOffset 属性。

对于 tint 转换,请设置 tintColortintMultiplier 属性。

对于 brightness 转换,请使用 brightness 属性。

对于 advanced 转换,请使用 redMultipliergreenMultiplierblueMultiplieralphaMultiplierredOffsetgreenOffsetblueOffsetalphaOffset 属性。

  brightness Number 应用亮度通道的百分比,介于 -1 和 1 之间,其中 -1 为全黑而 1 为全白。
  tintColor Hexidecimal 代表要应用的颜色的十六进制颜色值。
  alphaMultiplier Number 应用 Alpha 通道的百分比(0 到 1 之间的小数值)。
  redMultiplier Number 应用颜色的百分比(0 到 1 之间的小数值)。
  greenMultiplier Number 应用颜色的百分比(0 到 1 之间的小数值)。
  blueMultiplier Number 应用颜色的百分比(0 到 1 之间的小数值)。
  alphaMultiplier Number 介于 0 到 1 之间的小数值,表示应用 Alpha 透明通道的百分比。
  tintMultiplier Number 介于 0 和 1 之间的小数值,表示应用 tintColor 值的百分比。
  redOffset Number -255 到 255 之间的数字,先与 redMultiplier 值相乘,再与红色通道值相加。
  greenOffset Number -255 到 255 之间的数字,先与 greenMultiplier 值相乘,再与绿色通道值相加。
  blueOffset Number -255 到 255 之间的数字,先与 blueMultiplier 值相乘,再与蓝色通道值相加。
  alphaOffset Number -255 到 255 之间的数字,先与 alphaMultiplier 值相乘,再与 Alpha 通道值相加。
tweens     包含适用于缓动变体的设置。
SimpleEase     针对所有缓动属性,在整个补间动画中为每个缓动设置定义一个单独的值。
  ease Number 应用于补间动画的所有属性的缓动值。缓动属性是一个介于 -1(100% 缓入或加速)和 1(100% 缓出或减速)之间的百分比值。默认值为 0,表示补间动画具有恒定速度,没有加速或减速。
  target Number 使用 Adobe Flash CS4 的“复制动画”和“粘贴动画”命令时,由创作工具生成的 XML 不包含 SimpleEase 元素的 target 属性,这是因为 Flash CS4 对所有缓动属性都应用相同的值。然而,ActionScript 3.0 类允许同时对各个属性应用不同的 SimpleEase 值。target 的可能值与 CustomEase 的值相同:“position”、“scale”、“rotation”、“color”、“filters”、“x”、“y”、“scaleX”、“scaleY”、“skewX”和“skewY”。
CustomEase     定义一个由三次贝塞尔曲线组成的自定义缓动曲线。您可以将它同时应用于所有属性,也可以为不同的属性定义不同的曲线。

有关表示自定义缓动属性的曲线的详细信息,请参阅 CustomEase 类。

  target Number 分配了自定义值的属性。使用 Adobe Flash CS4 的“复制动画”和“粘贴动画”命令时,创作工具为 target 生成以下可能值:“position”、“scale”、“rotation”、“color”和“filters”。ActionScript 3.0 动画类提供更大的灵活性,您可以为以下变量定义各自的曲线:“x”、“y”、“scaleX”、“scaleY”、“skewX”和“skewY”。如果在 XML 中省略“target”属性,则所有缓动属性都定位到同一目标。

注意:XML 省略了自定义缓动曲线的第一个点和最后一个点。第一个点必须始终是 (0, 0)(补间属性的起始值),最后一个点必须是 (1, 1)(补间属性的结束值)。为保持代码有效并避免可能的错误,这些值将在 XML 中会忽略并假定为隐性值。

BezierControl     与用来定义曲线的曲线相关联的一个点。
  x Number 定义曲线所用的点的 x 坐标。
  y Number 定义曲线所用的点的 y 坐标。
BezierNode     一个点,位于定义曲线时所用的某条曲线上。
  x Number 曲线上的点的 x 坐标。
  y Number 曲线上的点的 y 坐标。
filters     定义 flash.filters 包中的一个对象作为元素(例如:filters:GlowFilter)。您可以添加与指定的 flash.filters 对象的属性相对应的属性。例如:

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

请参阅 flash.filters 包。

下面的示例说明了具有内联 XML 的 ActionScript,它描述了当元件 myShape 旋转、移动、使用自定义缓动设置并在 10 个帧中更改 Alpha 值时,该元件的 moveShape 影片剪辑实例的补间动画:

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