文档类: package com.lzxt.move{ import flash.display.Sprite; //导入Timer包 import flash.utils.Timer; //导入Timer事件包 import flash.events.TimerEvent; public class MoveSnow extends Sprite { private var snow:Sprite; private var timer:Timer; public function MoveSnow() { init(); //建立Timer计时器,每隔50毫秒发出一次记时事件 timer=new Timer(50); //开始记时 timer.start(); //注册记时事件侦听 timer.addEventListener(TimerEvent.TIMER,initsnow); } //初始化雪花 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 snows=getChildByName("snow"+j) as Sprite; //控制雪花运动 snows.x+=Math.random()*2-1; snows.y+=Math.random()*3; //控制雪花旋转 snows.rotation+=Math.random()*18-9; //超出舞台,初始化 if (snows.x>550||snows.x<0||snows.y>400) { snows.x=550*Math.random(); snows.y=0; } //强制刷新屏幕事件 evt.updateAfterEvent(); } } //绘制雪花 private function makeSnow():Sprite { //定义雪花瓣数 var snowlength:Number=Math.floor(Math.random() * 5) + 8; //定义雪花半径 var snowradius:Number=Math.random() * 5 + 5; var sp:Sprite=new Sprite; //设置绘图线形 sp.graphics.lineStyle(1,0xffffff); //使用循环绘制雪花线条 for (var i:int=0; i < snowlength; i++) { sp.graphics.moveTo(0,0); //计算旋转角度 var angle:Number=2 * Math.PI * i / snowlength; //绘制雪花 var x=snowradius * Math.cos(angle); var y=snowradius * Math.sin(angle); sp.graphics.lineTo(x,y); } return sp; } } }