flash特效之流星雨 2010-10-20 11:08:12| 分类: AS2.0课堂 | 标签:flash教程 |字号 订阅 来源:闪客帝国 作者:zjs35 一、算法分析 流星的运动轨迹是一条直线,从起点运动到终点,运动的方向通过直线的角度来控制。 如图1所示: 1、角度的控制 AB为一水平的直线,把直线AB旋转一定的角度即直线AC。在flash中,角度按顺时针方向旋转为正, 范围从0到180.要得到直线AC,通过MC的rotation属性来设置,表示如下: mc._rotation = angle; 2、运动控制 流星的运动起点为A,终点为C,从A点运动到C点只需设置流星的在x、y方向的速度,即图2中的AD和CD。在flash中 用正余函数和弧度可计算这两个速度。表示如下: vx = Math.cos(radian)*v; vy = Math.sin(radian)*v; 通过enterFrame事件让流星的坐标不断加上vx和vy就可实现沿直线AC运动。 二、制作过程 1、打开flash,新建400*200文档,其他默认。 2、按O键在场景中画一无线条的小圆,用鼠标把小圆拖拽成如图2所示的形状,选中该图形,在ColorMixer设置如图2,并按F8转换为影片剪辑,注册点在右端。 3、返回主场景,按Ctrl+L打开库,从库中拖出上一步制作好的流星,按Ctrl+F3调出属性面板,实例名设为: fallingStar,按F9打开动作面板,输入下列AS: */ onClipEvent (load) { var angle = 60;//流星的角度 var radian = angle*Math.PI/180;//转换为弧度 _rotation = angle;//设置流星的角度 _x = random(400); _y = 0;//流星运动的起点坐标,x随机,y为0,让流星位于 主场景之上 time = 100;//运动时间控制 v = random(6)+2;//速度为一随机值 a = 0.09;//y方向的加速度,可使效果更加逼真 vx = Math.cos(radian)*v;//x方向的速度 vy = Math.sin(radian)*v;//y方向的速度 } onClipEvent (enterFrame) { vy +=a;//y方向的速度加上加速度,这样水平方向是匀速运动,垂直方向是加速运动 _x += vx; _y += vy;//设置流星的坐标 _alpha = _xscale=_xscale=_yscale=time;//流星的缩放比例,用时间来控制 time -= 2;//时间不断递减 if (_x<0 || _x>400 || _y<0 || _y>120) { shis.removeMovieClip();//如果流星超出范围删除 } } /* 4、返回主场景,在第一帧上输入下列AS,不断复制流星,形成流星雨效果: var n = 0; onEnterFrame = function () { fallingStar.duplicateMovieClip("fallingStar"+n++, n); }; 5、按Ctrl+Enter测试观看效果。 本例主要应用了直线运动的原理,Windows屏保中的飞越星空,还有flash MTV中的下雨效果等特效都可以用此原理实现。赶快试试吧。 */ 本文来源:https://www.wddqw.com/doc/a1c9106c561252d380eb6e23.html