basic springing

by majoraze forked from basic easing (diff: 49)
♥0 | Line 61 | Modified 2010-11-24 13:32:01 | MIT License
play

ActionScript3 source code

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

// forked from majoraze's basic easing
// forked from majoraze's Throwing
package {
    import flash.display.Sprite;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.events.Event;
    import flash.events.MouseEvent;
    
    public class Spring extends Sprite {
        private var ball:Ball;
        private var spring:Number = .1;
        private var targetX:Number = stage.stageWidth/2;
        private var targetY:Number = stage.stageHeight/2;
        private var vx:Number = 0;
        private var vy:Number = 0;
        private var friction:Number = .93;
        private var gravity:Number = 5;
        
        public function Spring() {
            init();
        }
        
        
        private function init():void {
            stage.scaleMode = StageScaleMode.NO_SCALE;
            stage.align = StageAlign.TOP_LEFT;
            
            ball = new Ball();
            addChild(ball);
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
        
        private function onEnterFrame(e:Event):void {
            var dx:Number = mouseX - ball.x;
            var dy:Number = mouseY - ball.y;
            
            var ax:Number = dx * spring;
            var ay:Number = dy * spring;
            
            vx += ax;
            vy += ay;
            
            vy += gravity;
            vx *= friction;
            vy *= friction;
            
            ball.x += vx;
            ball.y += vy;
            
            //making a line to make more visible
            graphics.clear();
            graphics.lineStyle(1);
            graphics.moveTo(ball.x, ball.y);
            graphics.lineTo(mouseX, mouseY);
        }
    }
}



//ball class

import flash.display.Sprite;

class Ball extends Sprite {
    public var radius:Number;
    private var color:uint;
    public var vx:Number = 0;
    public var vy:Number = 0;    
    
    public function Ball(radius:Number = 40, color:uint = 0xff0000) {
        this.radius = radius;
        this.color = color;
        
        init();
    }
    
    public function init():void {
        graphics.beginFill(color);
        graphics.drawCircle(0,0,radius);
        graphics.endFill()
    }
}

Forked