AS3 - 雪花飘舞效果
作者:hangge | 2014-12-08 16:23
这是一个纯AS写的简单的flash动画效果。


代码如下:
--- winter.as ---
--- Snow.as ---
在线试玩:
开始动态创建大小不一,透明度不一的雪花在舞台上。同时根据鼠标的偏移量,雪花会进行飘动并有模糊效果。
效果图如下:


--- winter.as ---
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BlurFilter;
[SWF(backgroundColor="#31C8F3", frameRate="40", width="600", height="200")]
public class winter extends Sprite {
//创建BlurFilter类的实例
private var blur:BlurFilter = new BlurFilter(4, 4, 1);
public function winter() {
//定义要复制的总数
var num:int = 20;
//使用for循环开始复制
for (var i:int = 0; i<num; i++) {
//设定随机缩放
var scale:Number = Math.random()*1;
//设定随机的_alpha透明度
var alpha:Number = Math.random()*(1/scale)+0.4;
//创建并添加雪花
var temp_mc:Snow = new Snow();
//指定temp_mc的属性值.
temp_mc.x = Math.random()*(stage.stageWidth);
temp_mc.y = Math.random()*(stage.stageHeight);
temp_mc.scaleX = scale;
temp_mc.scaleY = scale;
temp_mc.alpha = alpha;
//针对temp_mc使用onEneterFrame进行循环以使所有的园环沿着光标的反向移动
temp_mc.addEventListener(Event.ENTER_FRAME,update);
addChild(temp_mc);
}
}
private function update(e:Event):void {
var t:Snow = e.currentTarget as Snow;
var Yspeed:Number = (stage.stageHeight/2-mouseY)/t.scaleY*0.1;
var Xspeed:Number = (stage.stageWidth/2-mouseX)/t.scaleX*0.1;
//定义blur.blurX和blur.blurY的值,这个值是根据上面的Xspeed和Yspeed的变化而变化的.
blur.blurX = Math.abs(Xspeed);
blur.blurY = Math.abs(Yspeed);
//指定应用滤镜
t.filters = [blur];
//x,y方向的移动和条件限制
t.y += Yspeed;
if (t.y>stage.stageHeight) {
t.y = 0;
}
if (t.y<0) {
t.y = stage.stageHeight;
}
t.x += Xspeed;
if (t.x>stage.stageWidth) {
t.x = 0;
}
if (t.x<0) {
t.x = stage.stageWidth;
}
}
}
}
--- Snow.as ---
package
{
import flash.display.DisplayObject;
import flash.display.Sprite;
public class Snow extends Sprite
{
//包外类测试
[Embed(source="snow.png")] //与下面的类关连
private var IconClass:Class;
public function Snow()
{
var sb:DisplayObject = new IconClass();
sb.x = -sb.width/2;
sb.y = -sb.height/2;
this.addChild(sb);
}
}
}
在线试玩:
全部评论(0)