// 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(0xffffff, 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, 0xcc3300, 1, 64, 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 { draw_mc.graphics.clear(); draw_mc.graphics.lineStyle(2, 0x99CC00); draw_mc.alpha = 0.05; var pLen:Number = points.push({x:this.mouseX, y:this.mouseY, 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]) { draw_mc.alpha *= 1.1; var cx:Number = points[i - 1].x; var cy:Number = points[i - 1].y; draw_mc.graphics.curveTo(cx, cy, (points[i].x + cx) / 2, (points[i].y + cy) / 2); } else { draw_mc.graphics.moveTo(points[i].x, points[i].y); } } } prevmouseX = this.mouseX; prevmouseY = this.mouseY; }; } } Light Painting - forked from: LineThing