可以使用 XML 和 fl.motion 包中的 ActionScript 类来描述补间动画。Adobe Flash Professional 具有“将动画复制为 ActionScript 脚本”命令,该命令可基于时间轴上的补间动画生成 XML 和 ActionScript,以在其他符号或其他项目中使用。也可以编写自己的补间动画的脚本。只要编译时在类路径中具有 fl.motion 类,就可将补间动画应用于指定的显示对象。有关动画类的详细信息,请参阅 fl.motion 包。支持 XML 的元素与《用于 Adobe Flash Platform 的 ActionScript 3.0 参考》中的类和属性相对应。
© 2015 Adobe Systems Incorporated. All rights reserved.
Tue Jun 12 2018, 11:20 AM Z
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 | 包含与动画相关的原始可视对象的属性。请参阅 fl.motion.Source 类。 | ||
Source | frameRate | Number | 为包含从 Flash Professional 中复制的原始动画的 SWF 文件设置的每秒帧数 (fps)。此值对于在其他 SWF 文件中实现 ActionScript 无效。请参阅 fl.motion.Source.frameRate 属性。 |
x | Number | 位于从 Flash Professional 复制的原始补间动画的开始位置的符号实例变形点的 x 坐标。 | |
y | Number | 位于从 Flash Professional 复制的原始补间动画的开始位置的符号实例变形点的 y 坐标。 | |
scaleX | Number | 以小数值表示的水平缩放百分比。此值通常介于 0 和 1 之间,但可以大于 1 或小于 0。例如,您可以将 scaleX 设置为 -1 以翻转对象,或者将其设置为 3 以将对象放大到原大小的三倍。 | |
skewX | Number | 沿着水平轴剪切的角度(以度为单位)。如果 skewX 和 skewY 值相等,它们将由 rotation 属性替换。 | |
skewY | Number | 沿着垂直轴剪切的角度(以度为单位)。如果 skewX 和 skewY 值相等,它们将由 rotation 属性替换。 | |
rotation | Number | 初始帧的旋转角度。 | |
elementType | 字符串 | 补间动画中使用的可视对象的类型。可能的值为:“movie clip”、“button”、“graphic”、“rectangle object”、“oval object”、“drawing object”、“group”、“bitmap”、“compiled clip”、“video”或“text”。 | |
symbolName | 字符串 | 由于原始可视对象可能不是符号实例,因此,如果存在 Adobe Flash Professional 文档库中的符号,则为该符号的名称。 | |
dimensions | 包含一些标签,这些标签使用 geom 命名空间来描述补间符号的边框和变形点。 | ||
geom:Rectangle | flash.geom 包中的对象。 | 可以添加与 flash.geom.Rectangle 对象的属性 (property) 相对应的属性 (attribute)。例如: <geom:Rectangle left="7" top="9" width="151.95" height="151.95" />top 和 left 值是相对于父对象的注册点而言的(top 和 left 在父对象的坐标空间中定义)。 | |
geom:Point | flash.geom 包中的对象。 | 变形点的坐标是按边框尺寸(geom:Rectangle 元素的值)的百分比定义的。如果变形点是边框的左上角,则坐标为 (0, 0)。如果变形点是边框的右下角,则坐标为 (1, 1)。这些值允许将变形点一致应用于不同比例的对象和注册点。变形点可以在边框以外,在这种情况下,坐标可能小于 0 或大于 1。 | |
Keyframe | 包含与时间轴上关键帧相对应的信息。 | ||
blank | Boolean | 指示关键帧为空。 | |
index | Number | 表示关键帧的唯一整数值。第一个关键帧索引始终为 0。必须以索引值的升序来指定 XML 中的关键帧。 | |
label | 字符串 | 一个可选字符串,用于描述关键帧并与时间轴上的帧标签相对应。 | |
tweenSync | Boolean | 在打开(“true”)和关闭(“false”)之间切换同步设置。“同步”重新计算补间的帧数,以与在时间轴上分配给补间的帧数相匹配。此属性不影响 ActionScript 动画,因为 ActionScript 不能控制图形符号。XML 属性只能由 Adobe Flash Professional 的“复制动画”和“粘贴动画”命令使用。如果从 XML 中省略,则默认值为 true。 | |
tweenSnap | Boolean | 在打开(“true”)和关闭(“false”)之间切换对齐设置。“对齐”根据符号的注册点将符号附加到运动路径。此属性不影响 ActionScript 动画,因为 ActionScript 不能控制图形符号。XML 属性仅用于 Adobe Flash Professional 的“复制动画”和“粘贴动画”命令。如果从 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 | 沿着水平轴剪切的角度(以度为单位)。如果 skewX 和 skewY 值相等,它们将由 rotation 属性替换。 | |
skewY | Number | 沿着垂直轴剪切的角度(以度为单位)。如果 skewX 和 skewY 值相等,它们将由 rotation 属性替换。 | |
rotation | Number | 当前帧的旋转角度。 | |
rotateDirection | 字符串 | 指定补间元素如何旋转。可能的值包括“auto”、“none”、“cw”、“ccw”。如果从 XML 中省略,则默认值为“auto”。 | |
rotateTimes | Number | 指定补间元素在起始关键帧和下一关键帧之间旋转的次数(包括正常旋转)。Adobe Flash Professional 要求该值为一个大于或等于 0 的整数值,而动画类允许小数值。 | |
tweenScale | Boolean | 如果为 false,则阻止在补间期间更改缩放。如果从 XML 中省略,则默认值为 true。 | |
cacheAsBitmap | Boolean | 如果从 XML 中省略,则默认值为 false。 | |
blendMode | 字符串 | 可能的值包括“normal”、“layer”、“multiply”、“screen”、“overlay”、“hardlight”、“lighten”、“darken”、“difference”、“add”、“subtract”、“invert”、“alpha”和“erase”。如果从 XML 中省略,则默认值为“normal”。 | |
orientToPath | Boolean | 如果从 XML 中省略,则默认值为 false。 | |
Color | 包含颜色变化的设置。Flash 符号实例有五种颜色模式:无、Alpha、色调、亮度和高级颜色。 对于无转换(无)模式,Color 标签为空,指示正常外观。对于 alpha 转换,请设置 alphaMultiplier 和 alphaOffset 属性。对于色调转换模式,请设置 tintColor 和 tintMultiplier 属性。对于亮度转换模式,请使用 brightness 属性。对于高级颜色转换模式,请使用 redMultiplier、greenMultiplier、blueMultiplier、alphaMultiplier、redOffset、greenOffset、blueOffset 和 alphaOffset 属性。 | ||
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 | 表示应用 alpha 透明通道的百分比的 0 到 1 之间的小数值。 | |
tintMultiplier | Number | 表示应用 tintColor 值的百分比的 0 到 1 之间的小数值。 | |
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 Professional 的“复制动画”和“粘贴动画”命令时,创作工具生成的 XML 不包含 SimpleEase 元素的 target 属性,因为 Flash Professional 对所有缓动属性都应用相同的值。然而,ActionScript 3.0 类允许同时对各个属性应用不同的 SimpleEase 值。目标的可能值与 CustomEase 的相同:“position”、“scale”、“rotation”、“color”、“filters”、“x”、“y”、“scaleX”、“scaleY”、“skewX”和“skewY”。 | |
CustomEase | 定义一个由三次贝塞尔曲线组成的自定义缓动曲线。它可以一次应用于所有属性,或您可以为不同属性定义不同的曲线。 有关表示自定义缓动属性的曲线的更多信息,请参阅 CustomEase 类。 | ||
target | Number | 分配了自定义值的属性。在使用 Adobe Flash Professional 的“复制动画”和“粘贴动画”命令时,创作工具可能为目标生成下列值:“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 对象的属性 (property) 相对应的属性 (attribute)。例如: <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();
Tue Jun 12 2018, 11:20 AM Z