使用 ActionScript®,可以在运行时控制时间轴。 使用 ActionScript,可以在 FLA 文件中创建交互和其他功能,仅使用时间轴是不能创建它们的。
使用 ActionScript®,可以在运行时控制时间轴。 使用 ActionScript,可以在 FLA 文件中创建交互和其他功能,仅使用时间轴是不能创建它们的。
请参阅 Web 帮助中对时间轴和 ActionScript 的讨论,以了解如何使用 ActionScript 控制时间轴。
绝对路径
绝对路径以文档加载到其中的层名开始,直至显示列表中的目标实例。 也可以使用别名 _root 来指示当前层的最顶层时间轴。 例如,影片剪辑 california 中引用影片剪辑 oregon 的动作可以使用绝对路径 _root.westCoast.oregon。
在 Flash Player 中打开的第一个文档被加载到第 0 层。 您必须给加载的所有其他文档分配层号。 在ActionScript中使用绝对引用引用加载的文档时,请使用格式_levelX,其中X是文档加载到的层号。 例如,在 Flash Player 中打开的第一个文档叫做 _level0;加载到第 3 层的文档叫做 _level3。
要在不同层的文档之间进行通信,必须在目标路径中使用层名。 以下示例显示portland实例如何定位名为georgia的影片剪辑中的atlanta实例(georgia与oregon处于同一级别):
_level5.georgia.atlanta
您可以使用 _root 别名表示当前层的主时间轴。 对于主时间轴,当 _root 别名被同在 _level0 上的影片剪辑作为目标时,则代表 _level0。 对于加载到 _level5 的文档,如果被同在第 5 层上的影片剪辑作为目标,则 _root 等于 _level5。 例如,如果影片剪辑southcarolina和florida都加载到同一层,则从实例southcarolina调用的动作可以使用以下绝对路径来指向实例florida:
_root.eastCoast.florida
相对路径
相对路径取决于控制时间轴和目标时间轴之间的关系。 相对路径只能确定 Flash Player 中它们所在层上的目标的位置。 例如,在 _level0 上的某个动作以 _level5 上的时间轴为目标时,不能使用相对路径。
在相对路径中,使用关键字 this 指示当前层中的当前时间轴;使用 _parent 别名指示当前时间轴的父时间轴。 您可以重复使用 _parent 别名,在 Flash Player 同一层内的影片剪辑层次结构中逐层上升。 例如,_parent._parent控制影片剪辑在层次结构中上升两层。 Flash Player 中任何一层的最顶层时间轴是唯一具有未定义 _parent 值的时间轴。
实例charleston时间轴中的动作(位于southcarolina的下一个层级下)可以使用以下目标路径将实例southcarolina作为目标:
_parent
若要从charleston中的动作指向实例eastCoast(上一层),可以使用以下相对路径:
_parent._parent
若要从charleston的时间轴上的动作指向实例atlanta,可以使用以下相对路径:
_parent._parent.georgia.atlanta
相对路径在重复使用脚本时非常有用。 例如,您可以将以下脚本附加到某个影片剪辑,使其父级放大150%:
onClipEvent (load) { _parent._xscale
= 150; _parent._yscale = 150;
}
您可以通过将此脚本附加到任意影片剪辑实例来重复使用该脚本。
Flash Lite 1.0 和 1.1 只支持将脚本附加到按钮。 不支持将脚本附加到影片剪辑。
无论使用绝对路径还是相对路径,都要用圆点(.)标识时间轴中的变量或对象的属性 后跟变量或属性的名称。 例如,以下语句将实例form中的变量name设置为值"Gilbert":
_root.form.name = "Gilbert";
使用绝对和相对目标路径
使用 ActionScript 可以将消息从一个时间轴发送到另一个时间轴。 包含动作的时间轴称作控制时间轴,而接收动作的时间轴称作目标时间轴。 例如,一个时间轴的最后一帧上可以有一个动作,指示开始播放另一个时间轴。 要指向目标时间轴,必须使用目标路径,指明影片剪辑在显示列表中的位置。
下面的例子显示了 westCoast 文档在第 0 层上的层次结构,它包含三个影片剪辑:california、oregon 和 washington。 每个影片剪辑又各包含两个影片剪辑。
_level0
西海岸
california
三藩市
贝克斯菲尔德
俄勒冈州
波特兰
阿什兰
华盛顿
olympia
埃伦斯堡
与在 Web 服务器上一样,Animate 中的每个时间轴都可以用两种方式确定其位置:绝对路径或相对路径。 实例的绝对路径是始终以层名开始的完整路径,与哪个时间轴调用动作无关;例如,实例 california 的绝对路径是 _level0.westCoast.california。 从不同位置调用相对路径时有所不同;例如,从sanfrancisco调用到california的相对路径是 _parent,但从portland调用相对路径是_parent._parent.california。
指定目标路径
要控制影片剪辑、加载的 SWF 文件或按钮,必须指定目标路径。 您可以手动指定,也可以使用“插入目标路径”对话框指定,还可以通过创建结果为目标路径的表达式指定。 要指定影片剪辑或按钮的目标路径,必须为影片剪辑或按钮分配一个实例名称。 加载的文档不需要实例名称,因为其层号即可作为实例名称(例如 _level5)。
将一个实例名称指定给影片剪辑或按钮
使用插入目标路径对话框来指定目标路径
它将变为控制时间轴。
手动指定目标路径
它将变为控制时间轴。
使用表达式作为目标路径
它将变为控制时间轴。
在参数框中输入一个计算目标路径的表达式。
单击,可将插入点放入脚本。 然后,在“动作”工具箱的“函数”类别中,双击 targetPath 函数。 targetPath 函数将对影片剪辑的引用转换为字符串。
单击,可将插入点放入脚本。 然后,在“动作”工具箱的“函数”类别中,选择 eval 函数。 eval 函数将字符串转换为可用于调用方法(如 play)的影片剪辑引用。
下面的脚本将值 1 赋予变量 i。 然后使用 eval 函数创建对影片剪辑实例的引用,并将它赋予变量 x。 现在,变量 x 表示对影片剪辑实例的引用,并可以调用 MovieClip 对象的方法。
i = 1; x = eval("mc"+i); x.play(); // 等价于 mc1.play();您也可以使用 eval 函数直接调用方法,如下例所示:
eval("mc" + i)。play();