package{
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class MoveSnow extends Sprite{
private var snow:Sprite;
private var timer:Timer;
//绘制雪花
private function makeSnow():Sprite{
//定义雪花瓣数
var snowlen:Number = Math.floor(Math.random()*5+8);
//定义雪花半径
var snowlon:Number = Math.random()*5+5;
var sp:Sprite = new Sprite();
//设置绘图线型
sp.graphics.lineStyle(1,0xffffff);
//使用循环绘制雪花线条
for(var i:int = 0;i<snowlen;i++){
sp.graphics.moveTo(0,0);
//计算旋转角度
var angle:Number = 2*Math.PI*i/snowlen;
//绘制雪花
var x = snowlon*Math.cos(angle);
var y = snowlon*Math.sin(angle);
sp.graphics.lineTo(x,y);
}
return sp;
}
//初始化
private function init(){
//创建150朵雪花
for(var j:int=0;j<150;j++){
snow = makeSnow();
addChild(snow);
//控制位置
snow.x = 550*Math.random();
snow.y = -400*Math.random();
//控制透明度
snow.alpha = 0.5*Math.random()+0.5;
//控制缩放
snow.scaleX = snow.scaleY = 0.5*Math.random()+0.5;
//注册实例名称
snow.name = "snow"+j;
}
}
//雪花运动
private function initsnow(evt:TimerEvent):void{
for(var j:int=0;j<150;j++){
//获取雪花名称
var snow = getChildByName("snow"+j) as Sprite;
//控制雪花运动
snow.x += Math.random()*2-1;
snow.y += Math.random()*3;
//控制雪花旋转
snow.rotation = Math.random()*18-9;
//超出舞台初始化
if(snow.x>550 || snow.x<0 || snow.y > 400){
snow.x = 550*Math.random();
snow.y = 0;
}
//强制刷新屏幕事件
evt.updateAfterEvent();
}
}
public function MoveSnow(){
init();
//建立timer计时器 50 毫秒一次
timer = new Timer(50);
//开始计时
timer.start();
//注册计时事件侦听
timer.addEventListener(TimerEvent.TIMER,initsnow);
}
}
}