forked from: Happy Christmas!
forked from Happy Christmas! (diff: 80)
fork: http://wonderfl.net/c/mABH graphics: http://blog.naver.com/dazi88
♥2 |
Line 123 |
Modified 2011-12-23 23:28:13 |
MIT License
archived:2017-03-20 11:10:32
| (replaced)
Related images
ActionScript3 source code
/**
* Copyright savage69kr ( http://wonderfl.net/user/savage69kr )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/4I7r
*/
// forked from neofatalist's Happy Christmas!
package
{
import flash.events.*;
import flash.display.*;
import flash.net.*;
import flash.utils.*;
import flash.system.*;
[SWF(backgroundColor=0x000000,width='465',height='465',frameRate='45')]
public class Main extends Sprite
{
internal var img:Loader;
internal var flakes:Array;
internal var snowLayer:Sprite;
internal var emitTime:int;
internal var emitter:Timer;
public function Main()
{
addEventListener(Event.ADDED_TO_STAGE,__init);
addEventListener(Event.REMOVED_FROM_STAGE,__dispose)
}
internal function __init(_e:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE,__init);
addChild(new Bitmap(new BitmapData(stage.stageWidth,stage.stageHeight,false,0x660000)));
addChild(img=new Loader);
img.contentLoaderInfo.addEventListener(Event.COMPLETE,__init_end);
img.load(new URLRequest("http://assets.wonderfl.net/images/related_images/c/ca/cada/cada771d91e87fb27d4110e1255f15fba84cb696"),new LoaderContext(true));
}
internal function __init_end(_e:Event):void
{
flakes=new Array;
addChild(snowLayer=new Sprite);
emitTime=1;
emitter=new Timer(emitTime);
emitter.start();
emitter.addEventListener(TimerEvent.TIMER,__emit);
}
internal function __dispose(_e:Event):void
{
removeEventListener(Event.REMOVED_FROM_STAGE,__dispose);
for(var i:int=0,j:int=flakes.length;i<j;i++)
removeChild(flakes[i]);
flakes=null;
}
internal function __emit(_e:TimerEvent):void
{
if(snowLayer.numChildren-1<400)
{
var i:Number=flakes.length;
snowLayer.addChild(flakes[i]=new particle);
flakes[i].addEventListener('melted',__emit_melted);
flakes[i].x=-100+Math.floor(Math.random()*1000);
flakes[i].z=(Math.random()*900)+550;
flakes[i].y=-700;
flakes[i]._id=i;
}
}
internal function __emit_melted(_e:Event):void
{
_e.target.removeEventListener('melted',__emit_melted);
snowLayer.removeChild(_e.target as Sprite);
var idx:int=flakes.indexOf(_e.target);
if(idx>-1)
flakes.splice(idx,1);
}
}
}
import flash.events.*;
import flash.geom.*;
import flash.display.*;
import flash.filters.*;
class particle extends Sprite
{
internal var rect:Sprite=new Sprite;
internal var onStage:Boolean = false;
internal var xVel:Number = (Math.random()*2)-1;
internal var yVel:Number= 2.5;
internal var zVel:Number = Math.random()*5 - 2.6;
internal var fil:BlurFilter = new BlurFilter();
internal var _id:Number;
public function particle() {
addEventListener(Event.ADDED_TO_STAGE, added);
addEventListener(Event.REMOVED_FROM_STAGE, dispose);
}
internal function added(e:Event):void{
var mat:Matrix= new Matrix();
var colors:Array = [0xEEEEEE,0xFFFFFF];
var alphas:Array = [1,0];
var circRad:Number = 10;
var ratios:Array = [0,255];
mat.createGradientBox(2*circRad, 2*circRad, 0, -circRad, -circRad);
graphics.lineStyle();
graphics.beginGradientFill(GradientType.RADIAL,colors,alphas,ratios,mat);
graphics.drawCircle(0,0,circRad);
graphics.endFill();
addEventListener(Event.ENTER_FRAME, loop)
onStage=true;
cacheAsBitmap = true;
}
internal function loop(e:Event):void{
if(y < 650){
y+=(yVel +(z/900));
x+=xVel;
z+=zVel;
yVel+= .01;
xVel += (Math.random()*1)-.5;
zVel += (Math.random()*1) - .5;
if( y < -800 || x < -500 || x > 1800 || z > 2000 || z < -2000 ){dispatchEvent(new Event("melted"))};
}else{
alpha -= .02;
if(scaleX < 2) scaleX += .04;
if(scaleY > .25)scaleY -= .02;
if(alpha < 0) {dispatchEvent(new Event("melted"))};
}
}
internal function dispose(e:Event):void{
fil = null;
onStage=false;
removeEventListener(Event.ENTER_FRAME, loop)
removeEventListener(Event.ADDED_TO_STAGE, added);
removeEventListener(Event.REMOVED_FROM_STAGE, dispose);
}
}
