package { import flash.display.Sprite; import flash.utils.Timer; import flash.events.TimerEvent; import flash.display.StageScaleMode; public class Lines2 extends Sprite { var midP = new Object(); var P0 = new Object(); var P1 = new Object(); var P2 = new Object(); var P3 = new Object(); var thickness:Number = 0; var thickness_inc:Number = 1; var thickness_max:Number = 2; var line_alpha:Number = 0.3; public function Lines2() { stage.scaleMode = StageScaleMode.NO_SCALE; cacheAsBitmap = true; var myTimer:Timer = new Timer(150); myTimer.addEventListener("timer", calc); myTimer.start(); } // This function draws a approximation of a cubic bezier curve // It is very fast but does not look quite the real one function drawCubicBezier_spline(P0, P1, P2, P3){ // calculates middle point of the two control points segment midP.xx = (P1.xx + P2.xx) / 2; midP.yy = (P1.yy + P2.yy) / 2; // draw fake cubic bezier curve lines (in two parts) graphics.curveTo(P1.xx, P1.yy, midP.xx, midP.yy); graphics.curveTo(P2.xx, P2.yy, P3.xx, P3.yy); } function calc(e:TimerEvent=null){ thickness = thickness+thickness_inc; if(thickness >= thickness_max){ thickness_inc = -1; }else if(thickness<=0){ thickness_inc = 1; } graphics.lineStyle(thickness, 0x000000, line_alpha); P0.xx = P3.xx; P0.yy = P3.yy; P1.xx = P0.xx + P0.xx - P2.xx; P1.yy = P0.yy + P0.yy - P2.yy; P2.xx = Math.random()*stage.stageWidth; P2.yy = Math.random()*stage.stageHeight; P3.xx = Math.random()*stage.stageWidth; P3.yy = Math.random()*stage.stageHeight; drawCubicBezier_spline(P0,P1,P2,P3); } } } lines2