多语言展示
当前在线:1484今日阅读:26今日分享:39

[AS编程教学]天气效果动画之鹅毛大雪

雪花效果可能是很多初学者必学必做的一个效果,该效果在实际的作品中还是比较常用的。的确有些时候就是需要场景中下雪,假如你用时间轴动画来做,那会是很麻烦的一件事情,随机性难以掌握而且永远是一个样子。但是用程序来实现就会好很多。 如下图所示,本教程就是要教会大家如何编码实现AS天气效果立的下雪效果 本示例效果浏览地址:http://www.zcool.com.cn/work/ZMTE0MTc0NA==.html
工具/原料

FlashCS3(及其以上版本),一张背景图

步骤/方法
1

首先我们新建一个空白的文档,帧频选择为30fps.

2

接下来我们导入一张背景图,为了衬托白色的雪花,一般选择和白色对比明显的神色为佳。快过年了嘛,我们选择一张红色喜庆的图。

3

接下来我们要自己先手动绘制一片雪花影片剪辑,届时代码会根据这片雪花复制生成很多片雪花在舞台上,大小形态各异。绘制的方法主要是利用径向渐变,从白色到透明的白色,这样会出现边缘模糊的效果。要注意雪花在我们视觉上不一定是绝对的圆形,因此我们这里做成椭圆,做好如下图所示:

4

给我们刚绘制的雪花一个SnowItem的链接类名。

5

再主时间轴新建一层,命名为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;}}}

6

测试,“鹅毛大雪”的感觉就出来了。

注意事项

第3步中雪花自己要反复测试后调整大小和形状虚实等等,一步很难画到位。

推荐信息