FlashCS3(及其以上版本),一张背景图
首先我们新建一个空白的文档,帧频选择为30fps.
接下来我们导入一张背景图,为了衬托白色的雪花,一般选择和白色对比明显的神色为佳。快过年了嘛,我们选择一张红色喜庆的图。
接下来我们要自己先手动绘制一片雪花影片剪辑,届时代码会根据这片雪花复制生成很多片雪花在舞台上,大小形态各异。绘制的方法主要是利用径向渐变,从白色到透明的白色,这样会出现边缘模糊的效果。要注意雪花在我们视觉上不一定是绝对的圆形,因此我们这里做成椭圆,做好如下图所示:
给我们刚绘制的雪花一个SnowItem的链接类名。
再主时间轴新建一层,命名为AS,然后写入以下代码:var total:int = 100;//雪花总数var max:int = 1;//最大尺寸var min:int = 0.18;//最小尺寸var snowList:Array = [];//雪花数组var w = stage.stageWidth;var h = stage.stageHeight;//----------------------------- createSnow();startMoveSnow() //建立雪花function createSnow():void{for (var i:int = 0; i < total; i++){var snow_mc:SnowItem = new SnowItem(); snow_mc.x = Math.floor(Math.random() * w);snow_mc.y = Math.floor(Math.random() * h);snow_mc.scaleX = snow_mc.scaleY = Math.random() * (max - min ) + min;snow_mc.alpha = Math.random() * .8 + .2;snow_mc['yspeed'] = Math.floor(Math.random() * 2 + 6);snow_mc['xspeed'] = -0.036 + Math.random() * 0.06;snow_mc['radian'] = 0;snow_mc.rotation = Math.random()*360;this.addChild(snow_mc);snowList.push(snow_mc); }} //控制雪花降落function startMoveSnow():void{this.addEventListener(Event.ENTER_FRAME,moveSonw);} function moveSonw(e:Event):void{for (var i:int = 0; i < total; i++){var mSnow:SnowItem= snowList[i] as SnowItem;mSnow['radian']+=mSnow['xspeed']*2;mSnow.x += Math.sin(mSnow['radian']) * 2;mSnow.y += mSnow['yspeed']; if (mSnow.y >= h || mSnow.x >= w || mSnow.x <= 0){//this.removeMovieClip();mSnow.y = -10;mSnow.x = -10 + Math.floor(Math.random() * w + 10);mSnow.rotation = Math.random()*360;}}}
测试,“鹅毛大雪”的感觉就出来了。
第3步中雪花自己要反复测试后调整大小和形状虚实等等,一步很难画到位。