1、如何使用 as 复制多个影片剪辑? 如何使用 as 复制多个影片剪辑? 解决思路 duplicateMovieClip 为复制影片剪辑(mc )语句。这个复制语句在 ActionScript 中应用十分广泛。通过这个语句的使用,我们可以不费吹灰之力就可以复制出足够多的影片剪辑(只要你的资源够的话)。 具体步骤 我们先来看看 duplicateMovieClip 的位置。如图 3.2.36 所示。 图 3.2.36 duplicateMovieClip 参数面板 它一共有三个参数框,分别是目标,名称,深度。如图 3.2.37 所示。 图 3.2.37 duplicateMovieClip 参数
2、【目标】就是我们要复制的原始的影片剪辑。例如我们要复制影片剪辑 yourname,那么我们就在目标框中填入 yourname。 【新名称】就是我们复制出来的影片剪辑的名称,例如:yourname1。 【深度】就是我们复制出来的影片剪辑的层数级别。较高级别的影片剪辑覆盖较低的影片剪辑。此参数应该是唯一的。 下面我们就来实际应用一下 duplicateMovieClip 语句,看看它能产生什么惊人效果! 1、复制一个影片剪辑 我们要复制一个影片剪辑,就要先创建一个原始的影片剪辑。好!我们运行 Flash,建立元件:名称为 name,类别为影片剪辑。如图 3.2.38 所示。 图 3.2.38 创建
3、新元件 我们可以用按钮来实现这一效果,这样更直观一些。我们建立一个按钮,形状随便一些就可以了。把名称为 name 的影片剪辑和建立的按钮,分别拖放在主场景的两个层中。点击影片剪辑 name 实例,给它取一个实例名为 name。如图 3.2.39 所示。 图 3.2.39 设置影片剪辑的实例名 然后点击按钮,在 Action 面板上加入下列语句: on(release) /当按钮点击时,执行以下语句 duplicateMovieClip(“name”,”name1”,1); /复制名称为 name 的影片剪辑,复制出来的影片剪辑名称为 name1。深度为 1 这样,我们就得到了一个复制出来的影片
4、剪辑 name1。但是,复制出来的 mc 在原来的mc 的上面,看起来的效果不太直观,我们就用以前介绍过的 set property 语句,设定复制的影片剪辑的属性。Set Property(“name1”,_x,350); 完整的 Action 为: on(release) duplicateMovieClip(name”,”name1”,1); setProperty(“name1”,_x,300);/设定影片剪辑 name1 的 x 轴上的坐标为 300。 如图 3.2.40 所示。 完成。请参考源文件 dup1。 2、复制多个影片剪辑 在实际应用中,我们很少用到复制一个影片剪辑的情况。
5、那么要复制多个影片剪辑的时候,我们应该怎样设置呢?好,我们来复制四个影片剪辑。与上例相同,首先制作一个名称为name 的影片剪辑和一个按钮。分别放在场景中的两个层中。在属性面板中填入影片剪辑名称 name。点击按钮加入 ActionScript: on(elease) /当按钮点击时,程序执行下面的语句。 duplicateMovieClip(“name”,”name1”,1);/复制名称为 name 的 mc,名称为 name1,深度为1。(下同) duplicateMovieClip(“name”,”name2”,2); duplicateMovieClip(“name”,”name3”,
6、3); duplicateMovieClip(“name”,”name4”,4); set Property(“name1”,_x,150); /设置 name1 的 x 轴坐标为 150。(下同) set Property(“name2”,_x,250); set Property(“name3”,_x,350); set Property(“name4”,_x,450); 这样,我们复制出了比较多的影片剪辑了。如图 3.2.41 所示。 图 3.2.41 添加复制影片剪辑命令 请请参见源文件 dup2 但是,这里面存在一个问题。就是,如果我们复制少一些的影片剪辑的时候,这种 Action的
7、写法还可以。如果我要复制 30 个影片剪辑的时候,按照这种写法就比较麻烦了。有没有解决的方法呢?当然有。计算机不是给我们增加负担的,而是给我们提供捷径的。我们可以利用变量来完成。 3、利用变量复制 我们同样做出一个影片剪辑(名称为 name)和一个按钮。分别把他们放到主场景中的两个层中。在属性面板中填入影片剪辑的名称 name。给场景中的按钮加入 Action: on(release) i=1; while(I30) duplicateMovieClip(“name”,”name”+I,I); setProperty(“name”+I,_x,random(550); setProperty(“
8、name”+I,_y,random(200); setProperty(“name”+I,_xscale,random(100); setProperty(“name”+I,_yscale,random(100); i=i+1; 解释如下: on(release) /当按钮点击时,执行下面的语句。 i=1; /设置变量 i 等于 1。 while(I30) /作一个循环语句 while,条件是当 i 小于 30 的时候,进行下面的语句。 duplicateMovieClip(“name”,”name”+i,i); /复制名称为 name 的 mc,复制出来的 mc 名称为 name1,name
9、2,把复制出来的 mc 放到不同的深度。 setProperty(“name”+I,_x,random(550); /设定复制出来的 mc 的 x 轴坐标为随机,范围是 550。 setProperty(“name”+I,_y,random(200); /设定复制出来的 mc 的 y 轴坐标为随机,范围是 200。 setProperty(“name”+I,_xscale,random(100); /设定复制出来的 mc 的 x 轴标尺为随机100 setProperty(“name”+I,_yscale,random(100); /设定复制出来的 mc 的 y 轴标尺为随机100。 i=i+
10、1; /变量 i 等于 i 加上数值 1。 如图 3.2.42 所示。 图 3.2.42 设置复制影片剪辑命令 请参考源文件 dup3。 4、利用时间轴 我们可以利用时间轴,制作出复制语句的动态效果。先期准备同上,在这里就不多说了。我们在时间线的第一帧添加 Action: i=1; while(i20) duplicateMovieClip(“name1“,“name“+i,i); setProperty(“name“+i,_x,random(550); setProperty(“name“+i,_y,random(150); setProperty(“name“+i,_xscale,rand
11、om(150); setProperty(“name“+i,_yscale,random(100); i=i+1; 在第十帧插入空白关键帧,并在此帧上添加 Action: gotoAndPlay(1); 如图 3.2.43 所示。 图 3.2.43 利用时间轴制作动态效果 关于 Action 代码,此例就不一一讲述了,完成。参看源文件 dup4。 注 意 是用 duplicateMovieClip 的时候,其【深度 】是唯一的。当复制出来的影片剪辑出现在同一层的时候会覆盖掉。 提 示 我们在用 duplicate 的时候,如果你给所复制的 mc 与原来 mc 相同的实例名字的时候,那就是说原来
12、的 mc 要被复制以后的 mc 所取代。例如:原始 mc 的名称为name1,那么,用上面的程序作完后,你就看不到原始的 mc 的影子了。也可以在语句中加入设置属性语句 visible,设置原影片剪辑 name 为不可见。 技 巧 使用变量,我们可以减小书写代码的工作量。在类似的语句块中,我们应该尽量的使用变量来替代规律的变化。 试一试 在本节中我们只是给复制出来的影片剪辑定义了 X 轴和 Y 轴,大家还可以利用上一节学习到的影片剪辑的属性自由制作,例如使用旋转,高度等等。 特别提示 本例提供的源文件之用作 duplicateMovieClip 的基础学习。其实利用这个语句还可以制作出非常多的效果,我们将在以后给大家一一介绍。 特别说明通过本节的学习,我们基本掌握了 duplicateMovieClip 命令的用法。需要注意的是,复制影片剪辑需要 cup 不断地进行运算,所以当你复制过多的时候,你的计算机很可能会罢工的。 相关问题removeMovieClip 删除用 duplicateMovieClip 复制出来的影片剪辑。这两条语句可以添加在帧或者按钮上。