flash on 2010-2-12 hiro_rec forked:0favorite:2lines:92license : MIT License modified : 2010-02-12 14:13:04 Embed Tweet package { import caurina.transitions.Tweener; import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BlendMode; import flash.display.Graphics; import flash.display.Sprite; import flash.events.Event; import flash.filters.BlurFilter; import flash.filters.ColorMatrixFilter; import flash.filters.GlowFilter; import flash.geom.Point; [SWF (backgroundColor='#000000', frameRate=30)] public class Glow02 extends Sprite { private var container:Sprite; private var line:Sprite; private var bmd:BitmapData; private var bmp:Bitmap; private var ptArray:Array = []; private var spArray:Array = []; public function Glow02() { initDisplay(); addEventListener(Event.ENTER_FRAME, drawLine); addEventListener(Event.ENTER_FRAME, render); } private function initDisplay():void { container = new Sprite(); line = new Sprite(); line.graphics.lineStyle(2, 0xFFFFFF); container.addChild(line); //addChild(container); bmd = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0x00000000); bmp = new Bitmap(); bmp.bitmapData = bmd; bmp.blendMode = BlendMode.ADD; addChild(bmp); } private var pt:Point = new Point(); private var i:int = -1; private function drawLine(event:Event):void { var l:int = spArray.length; var sp:Sprite = new Sprite(); var g:Graphics = sp.graphics; spArray.push(sp); container.addChild(sp); g.lineStyle(2, 0xFFFFFF); //g.drawCircle(mouseX, mouseY, 2); var pt0:Point = ptArray[i - 1]; if (pt0) g.moveTo(pt0.x, pt0.y); var pt1:Point = ptArray[i]; if (pt1) g.lineTo(pt1.x, pt1.y); pt.x = mouseX; pt.y = mouseY; ptArray.push(pt.clone()); i++; if (l > 10) { ptArray.shift(); var deleteSP:Sprite = spArray.shift(); Tweener.addTween(deleteSP, {alpha:0, time:0.3, transition:"linear", onComplete:function ():void { deleteSP.graphics.clear(); container.removeChild(deleteSP); } }) i--; } } private function render(event:Event):void { bmd.draw(container); var point:Point = new Point(); bmd.threshold(bmd, bmd.rect, point, "<", 0x00333333, 0x00000000, 0x00FF0000, true); var matrix:Array = [ 1, 0, 0, 0, 0, 0, 1, 0, 0, 5, 0, 0, 1, 0, 2, 0, 0, 0, 1, -5 ]; var matrixFilter:ColorMatrixFilter = new ColorMatrixFilter(matrix); //bmd.applyFilter(bmd, bmd.rect, point, new GlowFilter(0x0000FF, 1, 6, 6, 20)); bmd.applyFilter(bmd, bmd.rect, point, new GlowFilter(0x00ccff, 1, 10, 10, 2)); bmd.applyFilter(bmd, bmd.rect, point, new BlurFilter(5, 5)); //bmd.applyFilter(bmd, bmd.rect, point, matrixFilter); bmd.applyFilter(bmd, bmd.rect, point, new GlowFilter(0x2375fd, 5, 5, 1, 1)); //bmd.applyFilter(bmd, bmd.rect, point, new BlurFilter(10, 10)); } } } Code Fullscreen Preview Fullscreen zmaxlin : line FTMSuperfly : mouseFollow lightning line GlowFilter Point clone blendMode shift removeChild graphics addEventListener alpha mouseY mouseX addChild Event.ENTER_FRAME Tweener.addTween time push Event length Array Sprite