当前位置导航:炫浪网>>网络学院>>在线图书>>图形图像教程>>Flash入门与实战>>第七章 动作脚本进阶

第一节 MovieClip(电影剪辑)控制(4)


第七章 动作脚本进阶
 

你一定见过Flash动画中倾盆大雨、满天雪花、繁星点点等特效吧!这些特效就是利用duplicateMovieClip()命令的神奇功能来实现的!

duplicateMovieClip()命令的一般使用形式为:

duplicateMovieClip(目标,新名称,深度);

其中有三个参数:

target目标):要复制的电影剪辑的名称和路径。

newname(新名称):是复制后的电影前辑实例名称。

depth(深度):已经复制电影剪辑的堆叠顺序编号。每个复制的电影剪辑都必须设置唯一的深度,否则后来复制的电影剪辑将替换以前的复制的电影剪辑,新复制的电影剪辑总是在原电影剪辑的上方。

在使用时,需要注意以下几点:

u       复制的影片会保持父级影片原来的所有属性,所以,原来的影片是静止的,复制后的影片也静止,并且一个叠放在另一个上,如果你不给它们设置不同坐标,你就只能看到编号最大的复制影片,也就看不出是否复制出的效果了。

u       原来的影片在做补间运动,那么复制品也要做同样的运动。并且无论播放头在原始影片剪辑(或“父”级)中处于什么位置,复制的影片播放头始终从第一帧开始。所以,复制品和原影片始终有个时间差,因此,即使你不给复制的影片设置坐标,你也可以看到复制品在运动。

u       复制影片经常要与影片属性控制(特别是_x,_y,_alpha,_rotation,_xscale,_yscale等属性)结合才能更好地发挥复制效果。

u       复制影片还经常都要和循环语句配合,才能复制多个影片剪辑。

有时候,你需要删除复制好的影片,那就用removeMovieClip()命令,一般形式为:

removeMovieClip(影片剪辑实例名);

这个命令只有一个参数,那就是复制后的影片剪辑实例名称。

例如:

for(I=1;I<10;I++){ //变量I从1开始,到9为止,变量每次加1

duplicateMovieClip(”_root.a”,”a”+I,I);

}

上面这段程序代码对一个名字为a的影片剪辑实例进行复制,复制后的实例名称为a1,a2,…a9,深度分别为1,2,…9。

那么,在删除这些复制的影片剪辑实例时,你可以用下面的循环语句:

for(I=1;I<10;I++){

removeMovieClip(”a”+i);

}

有关这个复制影片剪辑命令的详细应用请参看本章第四节的前两个实例。


3.影片剪辑的路径

在前面,我们不止一次谈到MC的路径,那么什么叫路径,怎么运用路径呢?

我们知道,在Flash的场景中有个主时间轴,在场景里可以放置多个MC,每个MC又有它自己的时间轴,每个MC又可以有多个子MC……,就像在我们国家(场境)下有很多个省(MC),每个省下又有许多个市(子MC)……。这样,在一个Flash的影片中,就会出现层层叠叠的MC,如果你要对其中一个MC进行操作,你就说出MC的位置,也就是要说明MC的路径。

路径分绝对路径和相对路径,下面我们还是用一个实际例子来进行说明。

假设在场境里有两个MC,一个MC的实例名为mx,在mx下有个子MC名为mx1,在mx1的下面还有一个孙MC名为mx2。

另一个MC的实例名为dm,在dm下有个子MC名为dm1,在dm1下还有个孙MC名为dm2。

(1)绝对路径

不论在那个MC中进行操作,都是从主场景时间轴(用_root表示)出发,到MC,再到MC的子级MC,再到MC的孙级MC…,一层一层地往下寻找。例如下面的操作:

对mx2使用play()的命令操作,应使用以下这样的程序代码:

_root.mx.mx1.mx2.play();

对dm1使用play()的命令操作,应使用以下这样的程序代码:

_root.dm.dm1.play();

对mx使用play()的命令操作,应使用以下这样的程序代码:

_root.mx.play();

(2)相对路径

在一个MC内的父、子、孙关系中,有时候用相对路径比较简单,但是,用相对路径时,你必须清楚你在哪一级的MC中,你在对哪一级的MC进行操作。我们以上面的mx为例,使用的仍然是play()命令。

在mx1中,对它本身进行操作的程序代码为:

this.play();

对mx进行操作,因为mx是它的上一级(父级),所以程序代码为:

_parent.play();

对mx2的操作,因为mx2是它的子级,所以程序代码为:

this.mx2.play();或者mx2.play();

如果在mx2中对mx用相对路径操作就比较麻烦了,程序代码为:

_parent._parent.play(),因为mx是mx2的父级的父级呀。

如果用相对路径在mx中或者mx内的MC,对另一个dm内的MC进行操作,就十分麻烦了,我们不推荐这种方法。

从上面的例子中,我们知道,绝对路径比较好理解,并且用绝对路径可以不必考虑你是在哪级的MC中进行操作的。直接从主场景时间轴(_root)出发,一层一层的往下找,如果你对路径的理解不透,建议你就用绝对路径。用相对路径就必须清楚操作命令是在哪一级MC写的,是在对哪一级的MC进行操作,比较熟练后,在一个MC内用相对路径有时候比较简单。

 

相关内容
赞助商链接