实例三 雨中池塘
一、原理
雨中池塘是借助 flash cs 组件动画和 AS3 对象编程合作实现的一个经典案例,展现了池塘在雨中被雨
点击中涟漪不断的情景,远小近大,有很强的 3D 效果。在游戏和广告中都有很多类似算法,比如:流星
雨在夜空中频频划过,万箭齐发的效果,无数烟花飞入空中迸发四射的效果,延伸至各种怪物在一个区域
内来回走动等效果。
二、技术
它主要用到的技术点有,Flash CS 的时间轴动画,轨迹线运动,形状变化运动,多层动画合成,动画
元件导出,随机生成动画元件,元件位置循环生成,元件大小随机生成,元件按远近控制播放帧的起始播
放位置,按远近控制元件透明度等。
三、主要算法是
用 Flash CS 制作一个雨滴的动画效果,用两个图层实现,一个图层实现雨点从上至下在风的作用下斜
线划过屏幕投入水中的效果,另一图层实现雨滴落入池塘后产生涟漪从小到大的变形动画效果,两者合并
导出动画元件为 SWC 格式(或 SWF 格式)。AS3 在函数中循环生成 100 个雨滴,随机定位在舞台顶端,同
时随机定位雨点动画的播放起始位置。同时随机雨点的远近位置随机数,随机数字越大,视为离摄像机位
置越近,反之越远。越远的雨点元件缩放比例越小,同时透明度越高,视觉越模糊。这样在动画进入运行
的时候就会产生远小近大,远模糊近清晰的效果,出现烟雨朦胧的效果。
四、核心代码
for(var i:int=0;i<250;i++){
var yudian:Yudian = new Yudian();
yudian.x = 100+Math.floor(Math.random()*(800-100+1)); //屏幕上横向随机
yudian.y = 220;
yudian.gotoAndPlay(1+Math.floor(Math.random()*(100-1+1))); //随机确定初始播放帧位置
var scale:Number = Math.random();
yudian.scaleX = yudian.scaleY = scale; //缩放比例随机
yudian.alpha = scale; //透明度同缩放比例
this.addChild(yudian);
评论0
最新资源