鱼翔浅底实例

闪客沙龙

文/大成

1、源文件下载

3、源代码解释

 

 

 

本实例完全依靠Action动作脚本语言来控制,主场景中没有任何对象,通过此实例,大家可以体验另一种Flash动画制作方法,如果和传统的手工制作结合起来,能起到相得益彰的作用。

  本实例效果如下所示:银色的鱼儿跟随鼠标在水中快活地游来游去。

一、电影属性:

  首先启动Flash,新建立一个影片,并设置影片大小为384px*384px,影片背景色为深蓝色,颜色代码为#000066。

二、鱼的制作:

  因为整个影片是由Action动作脚本进行控制的,所以影片中所有要用到的对象都需要做成Movie clip电影剪辑,以便Action对其控制。影片中出现的鱼儿,我们把它分解为三部分,分别为鱼头,鱼鳍和鱼身。

  1.鱼头:首先制作鱼头。新建一个Movie clip影片剪辑,取名为Cabeza,这里的取名很重要,因为在后面我们就需要使用符号的名字,在Action中对具体的对象进行控制。进入符号的编辑状态后,使用绘图工具绘制一个鱼头,可以使用矩形工具先绘制一个矩形,然后使用箭头工具对其进行调整,然后使用椭圆工具绘制两个眼睛,最后如图2所示:

图2

要想让主场景里的帧动作直接调用该电影剪辑,要设置连接属性。在图库中用鼠标左键单击下Cabeza,单击鼠标右键,选择“连接”跳出连接属性设置窗口,标识符输入:Cabeza 连接设置选择“导出此元件”,点“确定”。如下图。

  2.鱼鳍:鱼头做好后,接下来制作鱼鳍。再新建一个Movie clip电影剪辑,取名为Aletas,同样使用绘图工具绘制如图3所示的鱼鳍:

图3

要想让主场景里的帧动作直接调用该电影剪辑,要设置连接属性。在图库中用鼠标左键单击下Aletas,单击鼠标右键,选择“连接”跳出连接属性设置窗口,标识符输入:Aletas 连接设置选择“导出此元件”,点“确定”。

  3.鱼身:最后就要制作鱼身了,同样新建一个Movie clip影片剪辑,取名为Espina,使用绘图工具绘制图4所示的鱼身:

图4

要想让主场景里的帧动作直接调用该电影剪辑,要设置连接属性。在图库中用鼠标左键单击下Espina,单击鼠标右键,选择“连接”跳出连接属性设置窗口,标识符输入:Espina 连接设置选择“导出此元件”,点“确定”。

 

  到此为止,所有的准备工作就完成了,接下来就是Actioin动作脚本的任务了。

三、主场景:

 1.我们将使用Action对前面制作的鱼头、鱼鳍和鱼身分别进行控制,从而产生最终的鱼儿腾空的效果。

  回到主场景中,将图层layer1重命名为action,然后给第1帧添加如下Actioin:

_quality="MEDIUM";
N = 20;
R = 12;
C = 2;
A = 2;

var x = new Array();
var y = new Array();

for (i=0;i<N;i++) { x[i] = 0; y[i] = 0; }

for (i=1;i<N;i++) {
if (i==1) {
attachMovie("Cabeza", "Pieza"+i, N+1-i);
} else if ( (i==4) || (i==14) ) {
attachMovie("Aletas", "Pieza"+i, N+1-i);
} else {
attachMovie("Espina", "Pieza"+i, N+1-i);
}
this["Pieza"+i]._x = 142+x[i-1];
this["Pieza"+i]._y = 142+y[i-1];
this["Pieza"+i]._xscale = 102+A*(1-i);
this["Pieza"+i]._yscale = 102+A*(1-i);
this["Pieza"+i]._alpha = 100-(100/N)*i;
}

  2.同样的,给第2帧添加如下Action:

x[0] = x[0]+(_xmouse-x[0]-142)/R;
y[0] = y[0]+(_ymouse-y[0]-142)/R;

for (i=1;i<N;i++) {
x[i] = x[i]+(x[i-1]-x[i])/C;
y[i] = y[i]+(y[i-1]-y[i])/C;
}

for (i=1;i<N;i++) {
this["Pieza"+i]._x = 142+(x[i-1]+x[i])/2;
this["Pieza"+i]._y = 142+(y[i-1]+y[i])/2;
this["Pieza"+i]._rotation = 57.295778*Math.atan2((y[i]-y[i-1]),(x[i]-x[i-1]));
}

  3.最后,给第3帧添加如下Action:.

gotoAndPlay(2);
  

  到这一步,我们的鱼儿就畅游在水中了。本实例的关键在于完全抛开了“符号制作+组织场景”的动画制作模式,而是采用了“符号制作+Action脚本控制”的模式,同样起到了应有的效果。所以在日常的Flash影片制作中,大家可以多常识一下不同的制作模式和思路,有助于提高工作效率,而且效果毫不逊色。

 

总结:

在主场景中,通过三个含有“帧动作”的Action命令,直接调用三个电影剪辑组件里的“组件连接标识符”Cabeza、Aletas、Espina,在场景中没有出现任何组件,这在已往的实例中是不多见的。