flash on 2013-5-17

by mutantleg
♥0 | Line 73 | Modified 2013-05-17 19:57:26 | MIT License
play

ActionScript3 source code

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

package {
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        
        public function FlashTest() {
            // write as3 code here..
            
            stage.addEventListener(Event.ENTER_FRAME, onEnter);    
        }//ctor
        
        public var px:Number = 200;
        public var py:Number = 200;
        public var pa:Number = 0;
        public var vx:Number = 0;
        public var vy:Number = 0;
        
        public var kx:Number = 200;
        public var ky:Number = 200;
        
        public function onEnter(e:Event):void
        {
            var mx:Number;
            var my:Number;
            
            mx = mouseX;
            my = mouseY;
            
            graphics.clear();
            graphics.lineStyle(2, 0);
            graphics.drawCircle(mx, my, 8);
            
            kx += (mx - kx) * 0.05;
            ky += (my - ky) * 0.05;
            
            graphics.drawCircle(kx, ky, 4);
            
            px += vx;
            py += vy;
            
            var ta:Number;
            
            ta = Math.atan2(ky - py, kx - px);
            
            graphics.drawCircle(px, py, 16);
            graphics.moveTo(px, py);
            graphics.lineTo(px+Math.cos(ta)*8, py+Math.sin(ta)*8);
            
            pa = angLerpRad(pa, ta, 0.2);
            
            graphics.moveTo(px, py);
            graphics.lineTo(px+Math.cos(pa)*8, py+Math.sin(pa)*8);
           
               vx += Math.cos(pa)*0.28;
               vy += Math.sin(pa)*0.28;
               
               //vy += 0.2;
               
               vx *= 0.99;
               vy *= 0.99;
               
             var wx:Number;
             
             wx = 2;  
               
               if (vx > wx) { vx = wx;} if (vx <-wx) { vx = -wx;}
               if (vy > wx) { vy = wx;} if (vy <-wx) { vy = -wx;}
           
            px += vx;
            py += vy;
            
        }//onenter
        
        /**
        //interpolate
        //from [a] angle to [b] by [d] percentage
        **/
        public static function angLerpRad(a:Number, b:Number, d:Number=0.1):Number
        {
            
            var c:Number;
            
            if ( (a - b) > 3.1415 )
                {
                    c = b + 6.28;
                    a = a + (c - a) * d; //0.1f;

                    if (a > 6.28) a -= 6.28;
                }
                else
                {
                    if ( (a - b) < -3.1415 )
                    {
                        c = b - 6.28;
                        a = a + (c - a) * d; //0.1f;
                        
                        if (a < 0) a += 6.28;
                    }
                    else
                    {
                        a = a + (b - a) * d; //0.1f;
                    }//endif nsted

                }//endif

            return a;
        }//anglerprad

        
        
        
        
    }//classend
}