forked from: Happy Christmas, Merry Holidays!
forked from Happy Christmas, Merry Holidays! (diff: 103)
BradSedito 2011 import net.hires.debug.Stats;
ActionScript3 source code
/**
* Copyright WindsorFarmer ( http://wonderfl.net/user/WindsorFarmer )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/rtD5
*/
// forked from bradsedito's Happy Christmas, Merry Holidays!
// forked from neofatalist's Happy Christmas!
// BradSedito 2011
package
{
import flash.display.Sprite;
import flash.events.*;
import flash.utils.Timer;
import flash.display.Bitmap;
import flash.display.BitmapData;
//import net.hires.debug.Stats;
[SWF(backgroundColor=0x000000, width = '465', height = '465', frameRate = '101')]
public class Main extends Sprite
{
//internal var _stats:Stats = new Stats();
internal var emitTime:int = 0.15;
internal var emitter:Timer = new Timer(emitTime);
internal var flakes:Array;
internal var snowLayer:Sprite;
public var Trace:Tracer;
public function Main()
{
// stage.addChild( _stats );
addChild(new Bitmap(new BitmapData(stage.stageWidth, stage.stageHeight, false, 0x000000)));
addEventListener(Event.ADDED_TO_STAGE, init);
addEventListener(Event.REMOVED_FROM_STAGE, dispose)
}
internal function init(e:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
emitter.start();
emitter.addEventListener(TimerEvent.TIMER, emit)
flakes = new Array();
snowLayer = new Sprite();
addChild(snowLayer)
Trace = new Tracer();
addChild(Trace);
Trace.x = stage.stageWidth * 0.5 - Trace.width*0.5;
Trace.y = stage.stageHeight * 0.5 - Trace.height*0.5;
}
internal function emit(e:TimerEvent):void{
if(numChildren-1 < 400){
var i:Number = flakes.length;
snowLayer.addChild(flakes[i] = new particle())
flakes[i].x = -100 + Math.floor(Math.random()*1000);
flakes[i].z = (Math.random() * 900 )+ 550;
flakes[i].y = -700;
flakes[i].addEventListener("melted", shovel);
flakes[i]._id=i;
Trace.add("new emit", 0xff0000);
}
}
internal function shovel(e:Event):void
{
e.target.removeEventListener("melted", shovel);
snowLayer.removeChild(Sprite(e.target));
for(var i:Number =0; i<flakes.length; i++){
if(flakes[i]._id == e.target._id) flakes = flakes.filter(scrape)
}
}
internal function scrape(e:*, index:int, arr:Array):Boolean{
return (e.onStage == true);
}
internal function dispose(e:Event):void{
for(var i:Number = 0; i< flakes.length; i++) removeChild(flakes[i])
flakes= null;
removeEventListener(Event.REMOVED_FROM_STAGE, dispose)
}
}
}
import flash.events.MouseEvent;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.*;
import flash.geom.Matrix;
import flash.display.GradientType;
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);
}
}
import flash.display.Sprite;
import flash.text.*;
class Tracer extends Sprite
{
public var txtFmt:TextFormat;
public var panel:Sprite;
private var lineNumber:Number = 0xA00000;
private var lines:Array;
public var panelTxt:TextField
private var topTxt:TextField;
public function Tracer()
{
lines = new Array();
txtFmt = new TextFormat();
txtFmt.font = "Times New Roman";
txtFmt.size = "16";
txtFmt.color = 0xffffff;
txtFmt.align = TextFormatAlign.CENTER
panel = new Sprite();
addChild(panel);
topTxt = new TextField();
topTxt.selectable = false;
topTxt.width = 220;
topTxt.defaultTextFormat = txtFmt;
topTxt.text = "Tracer Online trace()";
//topTxt.border = true;
//topTxt.borderColor = 0x00aaff;
topTxt.autoSize = TextFieldAutoSize.CENTER;
panel.addChild(topTxt);
panelTxt = new TextField();
panel.addChild(panelTxt);
panelTxt.width = 220;
panelTxt.height = 300;
panelTxt.border = true;
panelTxt.borderColor = 0x00ffff;
panelTxt.y = topTxt.height;
txtFmt.align = TextFormatAlign.LEFT;
panelTxt.defaultTextFormat = txtFmt;
panelTxt.multiline = true;
panel.addEventListener(MouseEvent.MOUSE_DOWN, panelDrag);
panel.addEventListener(MouseEvent.MOUSE_UP, panelDrop);
}
private function panelDrag(e:Event):void
{
panel.startDrag();
}
private function panelDrop(e:Event):void
{
panel.stopDrag();
}
public function add(strg:String=undefined, clr:Number=undefined):void
{
lineNumber++;
if(!strg)
{
strg = ".";
}
if(clr)
{
txtFmt.color = clr;
panelTxt.setTextFormat(txtFmt);
}
lines.push(lineNumber + " " +strg);
if(lines.length>panelTxt.height)
{
lines.splice(0, 1);
}
panelTxt.htmlText = "";
for(var i:int = 0; i< lines.length;i++)
{
panelTxt.htmlText += (lines[i]);
}
}
}