AS3.0 飘雪效果

飘雪效果 - JQD - The future is in my

 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);
 
 
 }
 
 } 
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值