Flash水之特效(三):水泡效果
这个效果运用了一些比较简单的as,希望大家能通过这个特效的学习掌握一些as的运用,并能做到在制作过程中举一反三!1、新建动画文件,按“Ctrl+M”打开影片属性对话框,设定动画的大小为350×320(将会用到前面制作水波特效的图片,所以尺寸跟前面的一样)背景色选择为蓝色,这样在做下面的水泡mc时有利于识别,单击“确定”。
2、接着做单个水泡,单击“insert→new symbol”(ctrl+f8),在弹出对话框中命名为“bubble”,类型选“movie clip”,点取oval tool画圆工具,画一正圆,无边线。下面进行颜色填充。打开fill面板(在哪里打开不用我啰嗦了吧),选取radial Gradient(注意在选取这个选项之前,一定要用选取工具选取刚才画的正圆),接着进行颜色填充的调整,在缺省情况下,颜色面板中是没有透明颜色的,如何做呢?点取mixer面板,选择白色,在alpha项填入0%,点取面板中右上角小三角形,单击add swatch,将颜色添加到颜色库,这下在fill面板中就可以用透明颜色了,具体的调节也并非用文字可以表述得清的,这得需要一些经验和感觉,假如实在调不出水泡的效果,在我的源文件中直接调用得了,不过最好是自己练练手,以后的作品总不能叫我帮你调吧:)。效果如图一如下:
(图一)
完成效果
3、接着我们要做的就是让这个水泡mc“动起来”。注意这里的动可是引号的哦,也就是要用as来控制mc运动的。好,跟我来做吧。按“Ctrl+f8”打开new symbol对话框,命名为“bubble2”,类型选“movie clip”,从library面板中将bubble拖入,在第3帧按下f5。
4、下面是一些关键的地方,注意看了喔!新建一层,在第一帧按f6,添入如下action script:
i = random (100) +random (10);
setProperty ("", _y, 350);
setProperty ("", _x, random (350) +1);
setProperty ("", _yscale, i);
setProperty ("", _xscale, i);
setProperty ("", _alpha, random (50) +50);
注解:
第一句是定义随机数啦,随机变量以百分比计算;
第二句是设置水泡开始的垂直位置,根据本动画的大小定为350;
第三句设置水泡开始的x位置,数字是决定随机的范围的,为了让整个画面都充满水泡的效果,这里选择了一个较大的值350,当然你也可以根据自己的要求决定;
第三、四句都是根据随机量i来变化水泡的大小,让水泡在水中更有层次感;
第五句是根据随机数设置透明值。使水泡更富于变化。如图一所示:
(图二)
5、在第二帧同样添加as如下:
setProperty ("", _y, getProperty ("",_y )-i/10);
设置水泡y的位置,让mc垂直升起来,数值10表示移动速度的参数。
6、在第三帧添加as如下:
if (getProperty ("",_y )<-50) {
gotoAndPlay (1);
} else {
gotoAndPlay (2);
}
注解:
第一句获得水泡mc的位置,并进行判断是否返回重新从底部向上移动。下面几句都是判断后的执行命令。如图三:
(图三)
7、ok,关键的水泡“bubble2”做好了,现在回到场景,开始添加背景效果,假如你是从第一个水的特效做起来的,现在就可以从“file->open as library”打开第一个水波特效的源文件,从library面板中拖出seapic这个mc到工作区,具体制作不再累叙,不会就查看第一个特效的制作方法,然后再在这一层上面新建一层,拖出前面花很多功夫制作的“bubble2”到第二层,在场景中的位置随便放,因为这里主要是用as来控制位置变化的!
8、现在在“bubble2”的帧上添加as,注意在添加as之前,我们必须要先定义as控制的对象,这个对象的定义在instance面板中完成,我们现在打开instance面板,选择“buuble2”这个mc,在name栏中填入“bubble”,如图四:
(图四)
接着就可以添加as了:
bubblenum = 78;
while (bubblenum>0) {
duplicateMovieClip ("/bubble", "bubble" and bubblenum, bubblenum);
bubblenum = bubblenum-1;
}
stop ();
注解:
设定水泡要复制的个数,不要太少也不要太多,根据自己动画的具体要求决定!
说明一点的是,duplicatemovieclip这个函数命令在实际操作中使用的频率是比较多的,希望一定要掌握!具体语法是duplicateMovieClip(target, newname, depth);
target 指要复制的目标电影夹路径.
newname 指复制的mc的唯一标识.
depth 指mc的深度,所谓深度是指一个确定mc或其他对象交迭时如何显现的堆栈次序. 具体的参看有关语法词典,这里只做提示性指导。操作结果如图五:
(图五)
9、按ctrl+enter观看效果,并进行细调。最后将动画导出,呵呵,蔚蓝的水中世界现在在你的手里创作出来了!添加几条金鱼,海马之类,然后再插入一些水泡音效,是不是感觉像神秘的海底啊:)
请看最后效果:
原文件下载