forked from: LineThing
// forked from milkmidi's LineThing
package {
import flash.display.Graphics;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.DropShadowFilter;
import flash.filters.GlowFilter;
import flash.utils.getTimer;
[SWF(width = "950", height = "500", frameRate = "41", backgroundColor = "#000000", pageTitle = "milkmidi.com")]
public class LineThing extends Sprite{
private var points:Array = new Array();
private var prevmouseX:Number = 0;
private var prevmouseY:Number = 0;
private var draw_mc:Sprite = new Sprite();
//_________________________Constructor
public function LineThing() {
var glow0:GlowFilter = new GlowFilter(0xefffff, 1, 16, 8, 1, 3, true, false);
var glow1:GlowFilter = new GlowFilter(0xffff00, 1, 8, 8, 1, 3, false, false);
var dropShadow0:DropShadowFilter = new DropShadowFilter(0, 90, 0xcc1300, 1, 128, 64, 5, 3, false, false, false);
draw_mc.filters = [glow0, glow1, dropShadow0];
this.addChild(draw_mc);
this.addEventListener(Event.ENTER_FRAME,onEventEnterFrame);
}
private function onEventEnterFrame(e:Event):void {
var _g:Graphics = draw_mc.graphics;
_g.clear();
_g.lineStyle(2, 0x99CC00);
var dx:Number = this.mouseX - prevmouseX;
var vx:Number = dx ? dx : Math.random() * randSet(-1, 1);
var dy:Number = this.mouseY - prevmouseY;
var vy:Number = dy ? dy : Math.random() * randSet(-1, 1);
var pLen:Number = points.push({x:this.mouseX, y:this.mouseY, vx:vx / 10, vy:vy / 10, life:getTimer()});
for (var i:Number = 0; i < pLen; i++) {
if (!points[i]) {
continue
}
if (getTimer() - points[i].life > 1000) {
points.splice(i--, 1)
} else {
if (i!=0 && points[i]) {
points[i].x += points[i].vx;
points[i].y += points[i].vy;
var cx:Number = points[i - 1].x;
var cy:Number = points[i - 1].y;
_g.curveTo(cx, cy, (points[i].x + cx) / 2, (points[i].y + cy) / 2);
} else {
_g.moveTo(points[i].x, points[i].y);
}
}
}
prevmouseX = this.mouseX;
prevmouseY = this.mouseY;
};
private function randSet(p_min:Number,p_max:Number):Number {
return Math.floor(Math.random() * 2);
}
//_________________________Public function
//_________________________Private function
//_________________________Event
//_________________________setter getter
}
}