多语言展示
当前在线:1003今日阅读:179今日分享:36

AS3基础教程-第29课-影片剪辑(上)-路径

从本节课开始,进入影片剪辑讲解模式。内容较多,故分成上中下三节讲述之。本节课讲述的是 路径 的概念
工具/原料

flashCS6

一、准备工作:
2

使用矩形工具【去掉边框色,只保留填充色】在舞台上随意绘制一个长方形,然后用选择工具单击选中这个长方形,按F8键,在弹出的对话框内选择为影片剪辑,其它保持默认,确定。然后在属性面板内设定实例名为 a_mc

3

现在是位于 主场景,我们使用 选择工具 ,双击舞台上的 影片剪辑,就会进入其内部,发现,舞台上的长方形已经被选中,直接按F8键,仍然设置为影片剪辑元件,其它默认,确定。然后在属性面板内设定实例名为 b_mc

4

此时,我们在 元件1 的内部,舞台上的是 元件2 ,我们在图层面板内插入一个新图层,用于写代码的。按F9键之后,输入代码如下:var yj1nb:uint=20//元件1内部定义的变量

5

用选择工具,双击舞台上的 元件2,进入元件2内部,然后新建图层,输入代码如下:var yj2nb:uint=50//元件2内部定义的变量然后,单击下图中,用蓝色方框 框出来的 场景1 ,就会进入主场景

6

来到主场景之后,新建一个图层,写代码如下:var zcj:uint=100

7

至此,前期工作搞定。在这里,通过下图来说明一下本例的结构图示

二、路径的概念
1

在主场景下,代码图层内,新增加入下面的代码:trace(zcj)就可以正常输出其值100因为这个zcj变量就是在主场景内定义的,那么,在主场景下就可以直接访问到该变量。

2

现在我们用选择工具双击舞台上的元件1,就会进入其内部,在代码层新增相同的代码:trace(zcj)就会出现下图的对话框,提示我们代码有误。这是为什么呢?原因是,zcj是在主场景内定义的变量,但是现在我们在元件1内部,并不在主场景内,要访问主场景内的变量,就必须带上路径,否则就会报错。因为元件1在主场景的下一级,故此,要访问主场景,需要在变量名的前面加上下面的代码:MovieClip(parent).意思是上一级其完整的写法是:trace(MovieClip(parent).zcj)

3

同理,如果我们进入元件2的内部,要访问元件1内部定义的yj1nb变量的话,也需要添加这个路径进行访问:trace(MovieClip(parent).yj1nb)见下图。

4

那么,此时如果要访问主场景内的zcj变量,应当如何呢?此时的路径需要继续添加,因为现在是在元件2内部,而元件2在元件1内部,元件1才是在主场景内的。故此,在元件2内部访问主场景,就需要添加两次parent,代码如下:trace(MovieClip(parent.parent).zcj)parent乃是 相对路径,返回值是当前时间轴的父级(上一级)另可使用绝对路径root,返回值是主时间轴本步骤内的代码使用据对路径的写法如下:trace(MovieClip(root).zcj)

5

其实,在动作面板内,单击“插入目标路径”按钮后,出现下图所示的对话框,我们先展开a_mc选中b_mc之后,再单击root,就会出现其路径。单击确定后,代码就会自动加入。截图中的路径写法和我写的稍有出入,本质上是一样的。this代表的是当前的时间轴,我都给忽略了。

6

上面的所有代码,都是由 子级访问父级 时,路径的写法。那么,如果由 父级 访问 子级 时,路径又当如何书写呢?很简单,只要加上子级的实例名即可直接访问,不需要parent,也不需要root

7

我们单击 场景1 进入主场景,在图层2内 添加如下的命令:trace(a_mc)trace(a_mc.b_mc)分别输出的是[object Timeline_1][object Timeline_2]意思是两个时间轴。如果要访问a_mc内的yj1nb变量,这样写代码:trace(a_mc.yj1nb)如下图,输出结果竟然是0,而我们定义的yj1nb的值为20,这是为什么呢?原因是,这个变量是在元件1内部定义的,我们的trace语句却是在主场景内调用它,此时相当于还没有给这个yj1nb变量赋值,故此输出的是yj1nb变量的默认值【因为设置的是uint数字类型,该类型的默认值就是0】

8

我们可以继续添加代码,以验证刚才的论证结论。在元件1内部,新增如下的代码:var wyff:Number=3.14然后在主场景内,新增如下的代码:trace(a_mc.wyff)输出的结果是 NANNAN就是Number数字类型的默认值

三、数据类型的默认值
1

刚才提到了一些数据类型的默认值,如果在定义变量的时候,不进行赋值的操作,此时,根据数据类型的不同,有着默认值。我们新建一个临时的AS3文件,测试下面的代码

2

var a:uintvar b:intvar c:Numbervar d:Stringvar e:Booleanvar f:Arraytrace('a的默认值是'+a)trace('b的默认值是'+b)trace('c的默认值是'+c)trace('d的默认值是'+d)trace('e的默认值是'+e)trace('f的默认值是'+f)

推荐信息