flash on 2016-2-23

by mutantleg
♥0 | Line 75 | Modified 2016-02-23 23:23:33 | 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/Eu7a
 */

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(Event.ENTER_FRAME, onEnter);  
        }//ctor
        
        public function onMdown(e:MouseEvent):void       
        {
            var ta:Number;
            ta = Math.atan2(cy-stage.mouseY, cx-stage.mouseX);
            
           addImp(stage.mouseX, stage.mouseY, 0, -4);
                        
        }//onclick
        
        public var cx:Number = 230;
        public var cy:Number = 230;
        public var ang:Number = 0;
        public var vx:Number = 0;
        public var vy:Number = 0;
        public var vang:Number = 0;
      
      public function onEnter(e:Event):void
      {
          graphics.clear();
          graphics.lineStyle(2, 0);
          
          graphics.drawCircle(cx,cy, 8);
          graphics.drawRect(0,350,465,16);
          
          checkImp(64, 32);
          checkImp(-64, 32);
         
          checkImp(32, -32);
          checkImp(-32, -32);
         
         vy+=0.2; 
          
          vx*=0.99; vy*=0.99; vang*=0.99;
          cx+=vx; cy+=vy;
          ang+=vang;
          
        if (stage.mouseX > cx +30) { vx+=0.2;}
        else if (stage.mouseX < cx - 30) { vx-=0.2;}

          /*
          graphics.moveTo(cx,cy);
          graphics.lineTo(cx+Math.cos(ang)*32,cy+Math.sin(ang)*32);
          
          graphics.moveTo(cx,cy);
          graphics.lineTo(cx+Math.cos(ang)*-32,cy+Math.sin(ang)*-32);
          */
      }//onenter  
      
      
      public function checkImp(ax:Number, ay:Number):void
      {
          var ux:Number; var uy:Number;
          var vx:Number; var vy:Number;
          var nx:Number; var ny:Number;
          nx = Math.cos(ang); ny = Math.sin(ang);
          
          ux = nx*ax; uy = ny*ax;
          vx = -ny*ay; vy = nx*ay;
          ax = cx+ux+vx; ay=cy+uy+vy;
          
          graphics.moveTo(cx,cy);
          graphics.lineTo(ax, ay);          
          
          if (ay > 350)
          {  
            addImp(ax,ay,0, (350-ay)*0.5);
            addImp2(ax,ay,0, 350-ay);           
          }//endif      
          
          if (ax > 465)
          { addImp(ax,ay, -1, 0); }
          if (ax < 0)
          { addImp(ax,ay, 1, 0); }
          
          
      }//checkimp
      
      
       public function addImp(ax:Number, ay:Number,ix:Number,iy:Number):void
        {
         var ta:Number;     
         vx += ix;      vy += iy;     
          ta = ((ax - cx) * iy) - ((ay - cy) * ix);
          vang += ta * 0.0001;
        }//addimp 
        
       public function addImp2(ax:Number, ay:Number,ix:Number,iy:Number):void
        {
         var ta:Number;     
         cx += ix;      cy += iy;     
          ta = ((ax - cx) * iy) - ((ay - cy) * ix);
          ang += ta * 0.0001;
        }//addimp 
        
        
    }//classend
}