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

请看示例。

XML 元素层次结构如下所示:

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

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

元素 属性 类型 说明
Motion     定义 Motion 实例,以便 Flash 可以分配用于描述补间动画特性的属性。请参见 fl.motion.Motion 类。
  duration Number 所选补间动画的帧数。请参见 fl.motion.Motion.duration 属性。
source     Source 元素所需的父标签。此标签没有属性,但编译器在处理 Source 元素和其属性时需要该标签。
Source     包含与动画相关的原始可视对象的属性。请参见 fl.motion.Source 类。
  frameRate Number 为包含从 Flash CS3 中复制的原始动画的 SWF 文件设置的每秒帧数 (fps)。该值对另一个 SWF 文件的 ActionScript 实现没有任何影响。请参见 fl.motion.Source.frameRate 属性。
  x Number 位于从 Flash CS3 复制的原始补间动画的开始位置的元件实例变形点的 x 坐标。
  y Number 位于从 Flash CS3 复制的原始补间动画的开始位置的元件实例变形点的 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 CS3 文档库中的元件名称(如果该元件存在),因为原始可视对象不能为元件实例。
dimensions     包含一个标签,它使用 geom 命名空间来描述补间元件的边框。
geom:Rectangle   flash.geom 包中的对象。 定义边框。可以添加与 flash.geom.Rectangle 对象的属性 (property) 相对应的属性 (attribute)。例如:

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

topleft 值是相对于父对象的注册点而言的(topleft 在父对象的坐标空间中定义)。

transformationPoint     包含一个标签,它使用 geom 命名空间来描述补间元件的变形点。
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 CS3 的“复制动画”和“粘贴动画”命令来使用。如果从 XML 中省略,则默认值为 true
  tweenSnap Boolean 将“贴紧设置”切换为打开 ("true") 和关闭 ("false")。“贴紧”根据元件的注册点将元件附加到运动路径。此属性不影响 ActionScript 动画,因为 ActionScript 不能控制图形元件。XML 属性只能由 Adobe Flash CS3 的“复制动画”和“粘贴动画”命令来使用。如果从 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 uint 除任何现有旋转外,还将旋转添加到补间元素中。该旋转取决于 rotateDirection 属性的值,必须将其设置为“cw”或“ccw”。rotateTimes 值必须是大于或等于零的整数。请参见 fl.motion.Keyframe.rotateTimes 属性。
  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     Color 元素所需的父标签。此标签没有属性,但编译器需要使用该标签来处理 Color 元素及其属性。
Color     包含颜色变化的设置。Flash 元件实例有五种颜色模式:nonealphatintbrightnessadvanced

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

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

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

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

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

  brightness Number 应用亮度通道的百分比在 -1 和 1 之间,其中 -1 为全黑而 1 为全白。
  tintColor Hexadecimal 表示要应用的颜色的十六进制颜色值。
  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 CS3 的“复制动画”和“粘贴动画”命令时,创作工具生成的 XML 不包含 SimpleEase 元素的 target 属性,因为 Flash CS3 对所有缓动属性都应用了相同的值。然而,ActionScript 3.0 类允许同时对各个属性应用不同的 SimpleEase 值。target 的可能值与 CustomEase 的值相同:“position”、“scale”、“rotation”、“color”、“filters”、“x”、“y”、“scaleX”、“scaleY”、“skewX”和“skewY”。
CustomEase     定义一个由三次贝塞尔曲线组成的自定义缓动曲线。它可以一次应用于所有属性,或您可以为不同属性定义不同的曲线。

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

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

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

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 MovieClip 实例的补间动画:

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="140.35" y="142.35" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" instanceName="moveShape" symbolName="myShape"> <dimensions> <geom:Rectangle left="13" top="5" width="125.5" height="125.5"/> </dimensions> <transformationPoint> <geom:Point x="0.5" y="0.5"/> </transformationPoint> </Source> </source> <Keyframe index="0" rotateDirection="cw" rotateTimes="1" tweenSnap="false" scaleX="1" scaleY="1" rotation="0"> <color> <Color alphaMultiplier="0.4"/> </color> <tweens> <CustomEase target="position"> <geom:Point x="0.09500906065407433" y="0.09500906065407433"/> <geom:Point x="0.460384258177029" y="0.11105020134567312"/> <geom:Point x="0.5441860465116279" y="0.22916666666666663"/> <geom:Point x="0.685859138879818" y="0.42885124660440044"/> <geom:Point x="0.5417057701316985" y="0.7393801887363497"/> <geom:Point x="0.7023255813953488" y="0.8999999999999999"/> <geom:Point x="0.7800300428109576" y="0.9777044614156086"/> <geom:Point x="0.9222955385843912" y="0.9222955385843913"/> </CustomEase> <CustomEase target="scale"> <geom:Point x="0.3333333333333333" y="0.3333333333333333"/> <geom:Point x="0.6666666666666666" y="0.6666666666666666"/> </CustomEase> <CustomEase target="rotation"> <geom:Point x="0.19132280349731443" y="0.19132280349731445"/> <geom:Point x="0.4753438631693523" y="0.13159386316935218"/> <geom:Point x="0.6666666666666667" y="0.32291666666666663"/> <geom:Point x="0.8086771965026857" y="0.46492719650268555"/> <geom:Point x="0.8579894701639811" y="0.8579894701639811"/> </CustomEase> <CustomEase target="color"> <geom:Point x="0.3333333333333333" y="0.3333333333333333"/> <geom:Point x="0.6666666666666666" y="0.6666666666666666"/> </CustomEase> <CustomEase target="filters"> <geom:Point x="0.3333333333333333" y="0.3333333333333333"/> <geom:Point x="0.6666666666666666" y="0.6666666666666666"/> </CustomEase> </tweens> </Keyframe> <Keyframe index="9" x="304.95" y="122"> <color> <Color/> </color> </Keyframe> </Motion>; var moveShape_animator:Animator = new Animator(moveShape_xml, moveShape); moveShape_animator.play();

下面的示例说明了一个更简单的补间动画,它添加了 fl.motion.MotionEvent 类中的一个事件以在名为 abox 的元件实例的动画完成时显示一条消息:

import fl.motion.Animator; import fl.motion.MotionEvent; var abox_xml:XML = <Motion duration="10" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*"> <source> <Source frameRate="12" x="186.45" y="120.45" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="Symbol 1"> <dimensions> <geom:Rectangle left="0" top="0" width="86.95" height="86.95"/> </dimensions> <transformationPoint> <geom:Point x="0.49971247843588273" y="0.49971247843588273"/> </transformationPoint> </Source> </source> <Keyframe index="0" rotateDirection="cw" rotateTimes="1"> <tweens> <SimpleEase ease="0.8"/> </tweens> </Keyframe> <Keyframe index="9" x="198" y="123"/> </Motion>; var abox_animator:Animator = new Animator(abox_xml, abox); abox_animator.play(); abox_animator.addEventListener(MotionEvent.MOTION_END,afterMotion); function afterMotion(e:MotionEvent) { trace("animation complete!"); }

 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/motionXSD.html