|
楼主 |
发表于 2004-3-21 12:29:16
|
显示全部楼层
制作喷火的龙
启动你的Flash,来观察一下这个会喷火的龙:其中脑袋部分跟随鼠标运动,然后身体的一节一节跟随前一个运动。当鼠标在龙的脑袋上的时候,按一下,龙就会喷火,并且有声音伴随出现。
使龙头跟随鼠标,这个可以drag mc,也可以getproperty: mouse._x ,mouse._y ,
然后设定龙头的mc坐标 set property(mcname,_x,xxx) set property(mcname._y.yyy)
再看看,龙身体都一样,所以可以确定是一个mc,龙的爪子的那个部分也简单,就是用一个爪子,旋转一个角度,跟龙身体的一节拼凑成的mc,跟随方法都一样,尾巴那部分也是如此。
当鼠标press 龙头的mc (上面覆盖了button) 的时候,触发 onmouseEvent 事件,使得龙头的mc 播放喷火的那一帧,然后在新建立一个layer,配上声音。
现在我们开始着手制作:在Flash的场景1 (scene1) 里面新建立一个mc,方法是运行 Insert 菜单下面的New Symbol 指令 ,不清楚的话,可以看看图1,或者直接用快捷键 Ctrl+F8来创建组件,弹出如图2所示范那样的对话框的时候 ,在上面的name 栏内添上你所要建立的组件的名字,在下面的Behavior 行为栏内选择你建立的组件的属性,一共有三种: Graphic,Button,MovieClip。具体用哪一种就要看你的需要了。
图1
在这个例子里面我们用的是Movieclip。我们先来构建龙头,这是这个场景中最重要的一个。
龙头需要几个部分: 龙眼、龙的上头部、下头部因为我们要设定龙张嘴喷火,所以龙头要分开。
还有一道直直的线,作为张嘴喷出来的火,旁边要有黄色的光芒(注意到了逐渐消隐,所以要graphic,或者mc),最后还需要一个声音 *.wav or *.mp3 。 龙头一共就是这些了,下面首先新建一个层。
图2
要选择Insert菜单下面的Layer,在最上面的一个layer,我们需要放置龙脑袋的上半部分,从图库当中把龙头的graphic拖进来。至于龙头是怎么来的,这还用问吗?当然是用手画的。拖进来之后,先在本层下面的层上把龙眼做出来。
可以用一个不规则的形状表示龙眼,因为龙头的眼睛的那地方是空的,可以把下面的东西遮掩上,所以眼睛还会是规则的。
在下面一层放上龙的下颚,还是从图库当中弄进来,一定要事先去图库当中做好哦。不然就没得东西拉了。
再次新建一个层,导声音文件, 方法是选择File 下面的import ,或者直接使用快捷键ctrl+r。
Flash5可以支持*.wav 或者*.mp3的导入,因此,你可以使用这两种声音文件的任何一种格式,比Flash4方便多了。
在这之前,你还需要建立一个隐形的button。方法是: ctrl+F8 或者Insert -> new symbol, 在弹出来的对话框之中填入name= atria ,Behavior 选择 button 。这样,一个按钮的组件就构造完毕了,然后在最后的hit 帧上面按F6,接下来在这帧上面画上一个圆。
到此为止,隐形按钮准备完毕,回到我们刚才的地方,在图层的第一帧把button拖进去。然后在第16帧插入空白帧 ,快捷键是F5。
然后把声音文件从图库当中导入,ctrl+L 就可以调出图库。
用鼠标拖到第16帧之后,你会发现中间的2-15帧是灰色的,因为龙头正在喷火的时候是不能再次给触发喷火事件准备条件的,所以这个地方的感应按钮应该取消,所以就应该把2-15帧都删除。
选中2-15帧: 这里有一个小技巧,就是:你会看到当鼠标放到上面的时候,是一个小手的形状,无法选取中间的部分,怎么办呢? 你看到你键盘上面的ctrl键子了吗? 对,按住它,你这次再看看鼠标是不是不变成小手了 。
这样,把2-14帧都选上以后,再敲一下delete 键,就可以把中间的部分删除了,这个可以自己实验一下。
第16帧放的是声音,因为不是很大,所以声音的格式选择Event就可以了,不用Stream 格式。然后在同层的18帧,把龙喷的“火”弄进来。这个当然也是事先做好的Graphic了。然后让火逐渐消失,所以要进行透明度(Alpha)的设定。在第26帧按F6,然后打开你的Effect属性面板。设定它的alpha为0。如图3那样,然后在这两帧 18-26 之间,建立Motion Tween 动画。
图3
在这个mc的最后一帧,也就是龙喷火之后,还要它能够感应鼠标的点击,所以在最后一帧还要把按钮弄上,这个方法跟上面是一样的,本的内容可以参看一下图4。
图4
然后最下面的一帧,是留给脚本和喷火的周围黄光的,第一帧: STOP(); 在第16帧,也就是跟声音同步的那一帧把黄光(其实就是一些杂乱无章的黄色条块)弄进来,跟上一层一样。设定好alpha 100%-0% 的转变就行了。下面是最上面龙头的设置。
编辑推荐阅读
● 感受Flash 5.0(一)
● 感受Flash 5.0(二)
● 感受Flash 5.0(三)
原来龙头是好好的,当喷火的时候,向上张开,所以我们需要的只是调整一下角度,然后建立动画,喷火之后在合上嘴,这个也很简单,弄不好的可以看一下源文件。眼睛那一层只需要跟住龙头就好,别的看着试把,下颚的方法跟龙头上半部分一样。这个mc整体弄好之后应该是图5这样子。
图5
龙头的mc构建完成,名字起为cabeca。然后来继续制作龙身体的一小节,还有爪子以及尾巴的mc。新建一个mc,名字起为corpo。 把图库之中的龙身体部分移进来,然后简单的让它动动,左右摇摆起来就行,这样,这个mc也就构建结束了。
爪子的mc名字是perna,跟上面一样一样的,简单的有点动感就好。剩下一个尾巴mc(rabo),方法也跟上面相同。
如此,这个龙的身体各个部分已经弄好了,下面来回到主场景当中来进行脚本的设定。因为我们需要的并不是一条死龙,那样的话,谁都会做。
我们这个动画的脚本是写在一个mc上面的, 这个mc的名字是loadingdragOBJ ,第一帧的脚本如下:
i = 18; // 初始化变量i =18
a = 3; // 初始化变量a =3
b = 3; // 初始化变量b =3
k = 30; // 初始化变量k =30
while (Number(i)>=0) { // 循环起始判断条件 ,如果n>=0 则进入循环
set ("/trail" add i add ":x_value", getProperty ("/trail" add i,_x)); //把拖动的各个mc (trail1-trail17) 的横坐标保存下来。分别赋值给trail1:x_value---trail17:x_value
set ("/trail" add i add ":y_value", getProperty ("/trail" add i,_y)); //把拖动的各个mc (trail1-trail17) 的纵坐标保存下来。分别赋值给trail1:y_value---trail17:y_value
set ("/trail" add i add ":vx", 0); //把0分别赋值给 trail1:vx---trail17:vx
set ("/trail" add i add ":vy", 0); //把0分别赋值给 trail1:vy---trail17:vy
i = i-1; //循环变量i减一
} // i=18开始循环,一共循环了18次
startDrag ("/trail0", true); //开始拖拽mc(trail0) ,锁定鼠标在中心点
第二帧脚本:
i = 1; //初始化循环变量i=1
while (Number(i)<=18) { //循环起始条件, 如果i<=18则进入该循环
set ("/trail" add i add ":vx", (eval("/trail" add i add ":vx")+(eval("/trail" add (i-1) add ":x_value")+k-eval("/trail" add i add ":x_value"))*1/a)/b);
// 设定trail1:vx的数值为 trail1:vx+trail0:x_value+k-trail1:x_value)*1/a/b 这样一大串
set ("/trail" add i add ":vy", (eval("/trail" add i add ":vy")+(eval("/trail" add (i-1) add ":y_value")-eval("/trail" add i add ":y_value"))*1/a)/b);
// 设定trail1:vy的数值为 trail1:vy+trail0:y_value+k-trail1:y_value)*1/a/b 这样一大串
set ("/trail" add i add ":x_value", eval("/trail" add i add ":x_value")+eval("/trail" add i add ":vx"));
// 一样的设定哦
set ("/trail" add i add ":y_value", eval("/trail" add i add ":y_value")+eval("/trail" add i add ":vy"));
i = Number(i)+1; //循环变量i加一
} //循环了18次
/trail0:x_value = getProperty("/trail0", _x); //设定拖动的mc (trail0) 的横坐标
/trail0:y_value = getProperty("/trail0", _y); //设定拖动的mc (trail0) 的纵坐标
i = 18; //i=18
while (Number(i)>=1) { //当i>=1时候,开始循环
setProperty ("/trail" add i, _x, eval("/trail" add i add ":x_value")); //设定拖动的各个mc (trail1-trail17) 的横坐标
setProperty ("/trail" add i, _y, eval("/trail" add i add ":y_value")); //设定拖动的各个mc (trail1-trail17) 的纵坐标
i = i-1; //循环变量i-1
} //一共循环17次
讲了半天trail,现在总算是知道trail是什么了吧?对了,就是龙头,龙身,龙尾巴的那些mc的instance name,在instance面板里面的设定(图6)。这样,基本上这个Flash就完成了,背景可以自己加工。看看效果怎么样?需要说明的是,你把各个部分拖进来的时候不用注意位置的排列,因为当动画播放的时候,就会自动排列好的,跟初始位置是没有关系的。
|
|