日志 教程
当前位置: 教程  >  游戏开发  >  FLASH游戏开发  >  正文

Flash游戏制作:时间轴和 ActionScript

作者:宋姗姗 发表于 2011/6/13 18:40:34     评论(0)     阅读(3950)     

使用 ActionScriptR,可以在运行时控制时间轴。使用 ActionScript,可以在 FLA 文件中创建交互和其他功能,仅使用时间轴是不能创建它们的。

 

绝对路径


绝对路径以文档加载到其中的层名开始,直至显示列表中的目标实例。 也可以使用别名 _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
        westCoast
                california
                        sanfrancisco
                        bakersfield
                oregon
                        portland
                        ashland
                washington
                        olympia
                        ellensburg与在 Web 服务器上一样,Flash 中的每个时间轴都可以用两种方式确定其位置:绝对路径或相对路径。实例的绝对路径是始终以层名开始的完整路径,与哪个时间轴调用动作无关;例如,实例 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_r("mc"+i);
x.play();
// this is equivalent to mc1.play();您也可以使用 eval 函数直接调用方法,如下例所示:

eval_r("mc" + i).play();

评论
显示
悄悄话
汇众教育官网 | 联系方式 | 版权声明 | 友情链接
Copyright 2008© 汇众益智(北京)教育科技有限公司. All Rights Reserved
京ICP备09092043号 京公网安备11010802009023号