时间轴和 ActionScript

上次更新日期: 2023年5月24日

使用 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实例(georgiaoregon处于同一级别):
_level5.georgia.atlanta

您可以使用 _root 别名表示当前层的主时间轴。 对于主时间轴,当 _root 别名被同在 _level0 上的影片剪辑作为目标时,则代表 _level0。 对于加载到 _level5 的文档,如果被同在第 5 层上的影片剪辑作为目标,则 _root 等于 _level5。 例如,如果影片剪辑southcarolinaflorida都加载到同一层,则从实例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 层上的层次结构,它包含三个影片剪辑:californiaoregonwashington。 每个影片剪辑又各包含两个影片剪辑。
_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();