flash on 2013-5-29

by mutantleg
move with WASD
♥0 | Line 85 | Modified 2013-05-29 20:59:16 | 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/qiCU
 */

package {
    import flash.ui.Keyboard;
    import flash.events.KeyboardEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
           
           stage.addEventListener(KeyboardEvent.KEY_DOWN, kdown);
           stage.addEventListener(KeyboardEvent.KEY_UP, kup);
           stage.addEventListener(Event.ENTER_FRAME, onEnter); 
        }//ctor
        
        public var vecKey:Vector.<Boolean> = new Vector.<Boolean>(512, false);
        
        public function kdown(e:KeyboardEvent):void
        { vecKey[e.keyCode] = true; }
        
        public function kup(e:KeyboardEvent):void
        { vecKey[e.keyCode] = false; }
        
        public var cx:Number = 200;
        public var cy:Number = 200;
        public var vx:Number = 0;
        public var vy:Number = 0;
        
        public var mx:Number = 260;
        public var my:Number = 200;
        public var mgrab:int = 0;
        
        public var tx:Number = 260;
        public var ty:Number = 150;
        public var trad:Number = 48;
        public var tang:Number = 0;
        
        
        public function onEnter(e:Event):void
        {
            graphics.clear();
            
            graphics.lineStyle(2, 0);
            
            graphics.moveTo(50,250);
            graphics.lineTo(400,250);
            
            graphics.moveTo(50, 0);
            graphics.lineTo(50, 250);
            
            graphics.moveTo(400, 0);
            graphics.lineTo(400, 250);
            
            graphics.drawCircle(cx,cy,8);
            
            graphics.drawCircle(mx,my-8,4);
            
            graphics.drawCircle(tx, ty,6);
            
            graphics.moveTo(mx,my-8);
            graphics.lineTo(tx,ty);
            
            if (mgrab > 0)
            {
              graphics.moveTo(mx,my-8);
              graphics.lineTo(cx,cy);   
            }
            
            tang += 0.04;
            var wang:Number;
            
            wang =1.57+ Math.cos(tang)*Math.sin(tang);
            
            mx = tx + Math.cos(wang)*trad;
            my = ty + Math.sin(wang)*trad;
            
            
            
            
            
            
            
            
            var bStartGround:Boolean;
            
            bStartGround = false;
            
            if (cy >= 250 - 10) { bStartGround = true; }
            
            if (vecKey[Keyboard.D]) { vx+=0.3;}
            else if (vecKey[Keyboard.A]) { vx-=0.3;}
            else if (bStartGround) { vx *= 0.9; }
            
            if (vecKey[Keyboard.W] && vy >= 0 && bStartGround) { vy = -7; }
            
            if (vy >= 0 && Math.abs(mx-cx)<8 && Math.abs(my-cy)<8)
            { mgrab = 1; }
            
            if (mgrab == 1)
            {
              cx += (mx - cx) *0.2;
              cy += (my - cy) *0.2;
              vx *= 0.9;
              vy *= 0.9;  
               if (vecKey[Keyboard.W])
               { vy = -5; mgrab = 0;}
               
               if (vecKey[Keyboard.S]) {vy+=0.3;}
            }
            
            if (mgrab <= 0)
            {
            vy += 0.2;
            }
            
            vx *= 0.99;
            vy *= 0.99;
            
            cx += vx;
            cy += vy;
            
            if (vy > 0 && cy >= 250-8) { cy = 250-8; vy = 0;}
            if (vx <0 && cx < 50+8) { cx = 50+8; vx = 0;}
            if (vx > 0 && cx > 400-8) { cx = 400-8; vx = 0;}
            
        }//onenter
        
    }//classend
}