实例教程—雪
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-10
|
好的雪花元件及参数如图2所示。
图2 雪花元件及参数
(5)在库面板中的“雪花”元件上单击鼠标右键,在弹出的快捷菜单中选择“链接”命令,在出现的“链接属性”对话框中选中为动作脚本导邮复选框,下面的在第一帧导出复选框同时被选中,将标识符设为snow,单击确定按钮 。添加了链接的影片剪辑元件“雪花”就做好了。
2.添加Actions
影片剪辑事件onClipEvent只能用于影片剪辑实例,所以在添加Actions之前必须在场景中创建影片剪辑的实例。
(1)在主场景中单击图层区的按钮新建一个图层。
(2)在库面板中选中“雪花”元件并拖动到舞台中的任意位置。
(3)确定“雪花”元件为选中状态,打开影片剪辑动作面板,在其中添加如下Actions:
onClipEvent (load) {
this._visible = false;
v0 = 2;
scale0 = 20;
num = 100;
var dir = new Array();
var v = new Array();
for (i=1; i<=num; i++) {
_root.attachMovie("snow", "snow"+i, i);
scale = random(2.5*scale0)+scale0;
with (_root["snow"+i]) {
_xscale = scale;
_yscale = scale;
_x = random(500);
_y = -(random(400));
_rotation = random(360);
dir[i] = -(random(180));
v[i] = random(v0)+v0;
}
}
}
onClipEvent (enterFrame) {
for (i=1; i<=num; i++) {
with (_root["snow"+i]) {
_x += Math.cos(dir[i]);
_y += v[i];
if (_x<0) {
_x = 500;
}
if (_x>500) {
_x = 0;
}
if (_y>400) {
_y = 0;
}
}
}
}
| 以上脚本在影片剪辑的load事件中对所有要出现的雪花进行初始化。v0用于控制总体下落速度,scale0用于控制总体雪花大小,num用于控制雪花总数,数组dir和v用于记录每一片雪花的下落方向和下落速度。在for循环语句中分别对每一片雪花使用随机数设置其大小、位置、自身旋转方向、运动方向和下落速度。
在影片剪辑的enterFrame事件中对每片雪花的位置进行调整。_x += Math.cos(dir[i]);语句使其每执行一次即在x方向移动Math.cos(dir[i])距离;_y += v[i]语句使其每执行一次即在y方向移动v[i]距离。这两个语句保证了每片雪花在下落时保持不变的方向和速度。
后面的3个if语句使每片雪花在超出边界范围时能再次进入场景中,以此不停循环,纷纷扬扬的大雪就做成了。
(4)按快捷键Ctrl+Enter测试影片,效果如图1所示。
3.改进Actions
仔细观察现在的效果,是不是所有雪花都要到达窗口边界才会消失?为了体现出远近层次,可以对Actions作一些改进,让部分雪花从水面上消失,以实现雪融于水的效果。
(1)在load事件中初始化数组的位置添加如下语句,为雪花的下落深度值分配一个数组。
var depth = new Array();
(2)在load事件中的for循环语句内添加如下语句,为每一片雪花的下落深度分配一个随机数。
depth[i] = random(200)+200;
(3)在enterFrame事件中将原来的if (_y>400)中的条件_y>400改成_y>depth[i]。
(4)按快捷键Ctrl+Enter测试影片,即可看到雪花融入水中的效果。
本例小结
本例的任务是设计制作“雪花纷飞”的特效动画。“雪花纷飞”在创意设计上力求用最少的工作做出下雪这一平常而美丽的自然现象。
attachMovie方法和random函数帮助我们实现了这一愿望。本例仅仅使用了一幅背景、一片雪花,通过attachMovie方法调用影片剪辑产生新的实例并将它们安排在不同的深度级别上,再用random函数为每片雪花设置不同的属性,从而实现了纷纷扬扬的雪花没有两片雷同的效果。
本例最后通过改进Actions实现雪融于水的效果,其中也有不足之处,如水面太平静,并且没有雪花的倒影。其实要做出更真实的效果也是可行的,如为每一片雪花的倒影分配相关的数组,降低其透明度属性_al |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn
为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
|