flash on 2016-9-1

by mutantleg
♥0 | Line 87 | Modified 2016-09-01 04:21:18 | 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/OSWH
 */

package {
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
       
           
           wx0 = 50; wy0=250; 
           wx1 = 320; wy1=320;           
       
           wy0=Math.random()*90+250;
           wy1=Math.random()*130+280;
       
           stage.addEventListener(Event.ENTER_FRAME, onEnter);             
        }//ctor
        
        public var wx0:Number = 0;
        public var wy0:Number = 0;
        public var wx1:Number = 0;
        public var wy1:Number = 0;
        
        public var cx:Number =230;
        public var cy:Number =230;
        public var vx:Number =0;
        public var vy:Number =0;
        public var ang:Number =0;
        public var vang:Number=0;
        
        public function getMag(ax:Number,ay:Number):Number
        { return Math.sqrt(ax*ax+ay*ay); }

        public function onEnter(e:Event):void
        {
           graphics.clear();
           graphics.lineStyle(2, 0); 
            
            vx*=0.99;vy*=0.99;
            vy+=0.2;
            if (cy>430) { cx=230;cy=230;vx=0;vy=0;
               wy0=Math.random()*90+250;
               wy1=Math.random()*130+280;
            }
            //if (vy>0&&cy>=435){vy*=-0.5; }
            
            
           var r:Number;
           var wr:Number;
           r=16;
           wr=16; 
           
           r=8;wr=32;
           r=32;wr=2;
            
           var px:Number; var py:Number;
            
           px =cx; py=cy;
            
           graphics.drawCircle(px,py,r);
           graphics.moveTo(px,py);
           graphics.lineTo(px+Math.cos(ang)*r,py+Math.sin(ang)*r);
           
           graphics.drawCircle(wx0,wy0,4);
           graphics.drawCircle(wx1,wy1,4);
           graphics.moveTo(wx0,wy0);
           graphics.lineTo(wx1,wy1);
  
           var t:Number;
           t = getClose(px,py,wx0,wy0,wx1,wy1);
           
           graphics.drawCircle(closex,closey,wr);
            
            var dx:Number; var dy:Number;
            var mag:Number;
            dx= (px)-closex;dy=(py)-closey;
            mag = getMag(dx,dy);
            if (mag==0){mag=0.001;}
            dx/=mag;dy/=mag;
            if (mag<(r+wr))
            {
              var dot:Number;
              dot = vx*dx+vy*dy;  
              if (dot<0)
              {
               vx+= -dx*dot;
               vy+= -dy*dot;  
               ang += ((vy*dx)+(dy*vx)) / -r;
              } 
            }//endif
            
            cx+=vx; cy+=vy;
            
        }//onenter
        
        public var closex:Number =0;
        public  var closey:Number =0;
        public function getClose(px:Number,py:Number, x0:Number,y0:Number,x1:Number,y1:Number):Number
        {
           var t:Number;
           var ax:Number; var ay:Number;
           var bx:Number; var by:Number;
           ax = px-x0; ay=py-y0;
           bx=x1-x0; by=y1-y0;
           t = (ax*bx+ay*by)/(bx*bx+by*by);
           if(t<0){t=0;} if(t>1){t=1;}
            closex=x0+bx*t;
            closey=y0+by*t;
           return t; 
        }//getclose
        
        
        
    }//classend
}