SineAnimation study

by fra978
♥0 | Line 33 | Modified 2013-04-06 06:13:07 | MIT License
play

ActionScript3 source code

/**
 * Copyright fra978 ( http://wonderfl.net/user/fra978 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/hWHP
 */

package {

    import flash.display.Sprite;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    import flash.display.CapsStyle;
    import flash.display.LineScaleMode;

    [SWF(backgroundColor="0x000000", framerate="60")]
    
    public class SineAnimation extends Sprite{
        
        public function SineAnimation():void{
            var moveTimer:Timer=new Timer(10);
            moveTimer.addEventListener(TimerEvent.TIMER,onTimer);
            moveTimer.start();
        }      

        public function drawCurve( phase:Number = 5, waveWidth:Number = 2, amplitude:Number = 100 , sineMcWidth:Number = 0):void{

            if (sineMcWidth == 0){ sineMcWidth  = stage.stageWidth; }
            var offsetY:Number = stage.stageHeight/2;
            var sineCurrentPointX:Number;
            var currentDelta:Number;
            var resultCurve:Sprite = new Sprite;
            graphics.clear();
            graphics.lineStyle(1, 0x990000, 1, false, LineScaleMode.NONE, CapsStyle.SQUARE);
            graphics.moveTo(-20 ,offsetY );

            for( var i:Number = 0; i < sineMcWidth; i++ ) {

                currentDelta = Math.PI * i / 100*waveWidth +  phase ;
                sineCurrentPointX = offsetY + amplitude * Math.sin(currentDelta);
                graphics.lineTo( i , sineCurrentPointX );
        
            }
        }

        public function onTimer( e:TimerEvent  ):void{
    
            drawCurve(e.target.currentCount/100, .1);
        }
    }
}