flash on 2016-3-5

by mutantleg
♥0 | Line 112 | Modified 2016-03-05 08:10:39 | 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/446Z
 */

package {
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
            stage.addEventListener(MouseEvent.MOUSE_DOWN, onMdown);
            stage.addEventListener(MouseEvent.MOUSE_UP,onMup);
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
        
        public function onMdown(e:MouseEvent):void { mbutton = 1; }
        public function onMup(e:MouseEvent):void { mbutton = 0; }
        
        public var mbutton:int = 0;
        
        public function isWall(ax:Number,ay:Number):Boolean
        { return (ax<0||ay<0||ax>465||ay>465); }
        
        public var cx:Number = 230;
        public var cy:Number = 230;
        public var vx:Number = 0;
        public var vy:Number = 0;
        public var gmode:int = 0;
        public var gx:Number = 0;
        public var gy:Number = 0;
        public var gx2:Number = 0;
        public var gy2:Number = 0;
        
        public var gwait:int = 0;
        
        public function onEnter(e:Event):void
        {
         graphics.clear();
         graphics.lineStyle(2, 0);     
            
            var r:Number;r=16;
           
           vy+=0.4;
           vx*=0.99;
           
            if (vx>0&&isWall(cx+r,cy)) {vx*=-0.5;}
            else if (vx<0&&isWall(cx-r,cy)) {vx*=-0.5;}
            if (vy>0&&isWall(cx,cy+r)) {vy*=-0.5;}
            else if (vy<0&&isWall(cx,cy-r)) {vy*=-0.5;}
           
           cx+=vx;cy+=vy;

            
           var mx:Number; var my:Number;
           var ax:Number; var ay:Number;
           var kx:Number; var ky:Number;
           var ta:Number;
           mx = stage.mouseX; my = stage.mouseY;
           
           if (gmode == 0)
           {
               ta = Math.atan2(my-cy,mx-cx);
               kx = Math.cos(ta)*8;
               ky =Math.sin(ta)*8;
               var i:int; 
               ax= cx;ay=cy;
               for (i=0;i<88;i+=1)
                {
                   // graphics.drawCircle(ax,ay,2);
             
                    if (isWall(ax,ay)){break;}
                     ax+=kx;
                     ay+=ky;
                 }//nexti
                
            }//endif
            
            if (i<88)
            {graphics.drawCircle(ax,ay,8);}
            
            if (gwait<=0&&gmode == 0 && mbutton > 0 && i<88)
            {
                //gmode = 1;
                
                gx2=gx;gy2=gy;
                gx= ax;gy=ay;
                
                gwait=20;
            }//endif
            

            
            if (gwait > 0) {gwait-=1;}
            
            //if (gmode == 1)
            {
            //   if (mbutton == 0) {gmode=0;} 
               
               graphics.drawCircle(gx,gy,8);
               graphics.moveTo(gx,gy);
               graphics.lineTo(cx,cy);
               graphics.drawCircle(gx2,gy2,8);
               graphics.moveTo(gx2,gy2);
               graphics.lineTo(cx,cy);
               
               var d:Number; var rest:Number;
               rest=64;
                d = getMag(gx-cx,gy-cy);

                if (cy>gy && d >rest)
                {
                  vx += (gx - cx) * 0.04;
                  vy += (gy - cy) * 0.04;
                }
                
            var nx:Number; var ny:Number;
            var dt:Number; 
                   ta = Math.atan2(cy - gy, cx - gx);
                   nx = Math.cos(ta); ny = Math.sin(ta);
                   dt = vx * nx +vy * ny;
                       if (cy > gy&& d > rest)
                        {
                         vx -= nx * dt*0.35;
                         vy -= ny * dt*0.35;
                        }
                        
                        
                     if (cy>gy2 && d >rest)
                {
                  vx += (gx2 - cx) * 0.04;
                  vy += (gy2 - cy) * 0.04;
                }
                
           
                   ta = Math.atan2(cy - gy2, cx - gx2);
                   nx = Math.cos(ta); ny = Math.sin(ta);
                   dt = vx * nx +vy * ny;
                       if (cy > gy2&& d > rest)
                        {
                         vx -= nx * dt*0.35;
                         vy -= ny * dt*0.35;
                        }        
                        
                        
                        
                      vx *= 0.99;
                      vy *= 0.99;
                                
             }//endif
            
              graphics.drawCircle(cx,cy,r);

        }//onenter
        
        public function getMag(ax:Number,ay:Number):Number
        { return Math.sqrt(ax*ax+ay*ay); }
        
        
        
    }//classend
}