flash on 2016-3-22

by mutantleg
♥0 | Line 61 | Modified 2016-03-22 07:40:43 | 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/QaZh
 */

package {
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
            vecNode = new Vector.<xNode>(0, false);
            var a:xNode; var i:int;
            for (i=0;i<16;i+=1)
            { a = new xNode(); a.cx= 230+i*4; a.cy = 230; vecNode.push(a); }         
            
            
           stage.addEventListener(Event.ENTER_FRAME, onEnter); 
        }//ctor
        
        public var vecNode:Vector.<xNode>;
        

        public var ang:Number = 0;
        
        public function onEnter(e:Event):void
        {
          graphics.clear();
          graphics.lineStyle(2, 0);   

        var i:int; var num:int; var a:xNode;
         num=vecNode.length;
 
         var k:int;
         var ax:Number; var ay:Number;
         var b:xNode;
         var mx:Number; var my:Number;
         mx = stage.mouseX; my = stage.mouseY;
         
         ang +=0.03;
        
        for (k=0;k<8;k+=1)
        {
         a = vecNode[num-1]; 
         a.cx=230;a.cy=230;
         a.cx = mx; a.cy=my;
       //  a.cx=230+Math.cos(ang)*64;
       // a.cy=230+Math.sin(ang)*64;
         
         b = vecNode[0];        
         //b.cx = stage.mouseX; b.cy = stage.mouseY;
        // b.cx += (mx-b.cx)*0.2;
        // b.cy += (my-b.cy)*0.2;
      //   b.cx = 230 + Math.cos(ang)*180;
     //    b.cy = 230 + Math.sin(ang)*Math.sin(ang)*180;
         var t:Number; t=0.5;
        t = Math.sin(ang)+1.57;
         b.cx = a.cx + Math.cos(t)*180;
         b.cy = a.cy + (Math.sin(t))*180;
       //  graphics.drawCircle(ax,ay,4);
       // b.cx += (ax-b.cx)*0.2;
      //  b.cy += (ay-b.cy)*0.2;
          
         for(i=1;i<num;i+=1)
         {
           a = vecNode[i];
           ax = (b.cx-a.cx)*0.5;
           ay = (b.cy-a.cy)*0.5;
         //  if (getMag(b.cx-a.cx,b.cy-a.cy)>16)
           { a.cx+=ax;a.cy+=ay;  
             b.cx-=ax; b.cy-=ay;
           }
           
           /*
           var ta:Number;
           ta = Math.atan2(b.cy-a.cy,b.cx-a.cx);
           a.cx += Math.cos(ta);
           a.cy+=Math.sin(ta);
           b.cx -= Math.cos(ta);
           b.cy -=Math.sin(ta);
           */
           b=a; 
         }//nexti
        }//nextk

         for(i=0;i<num;i+=1)
         {
          a = vecNode[i];
          graphics.drawCircle(a.cx,a.cy,8);
         }//nexti
            
        }//onenter        
        
        public function getMag(ax:Number,ay:Number):Number
        { return Math.sqrt(ax*ax+ay*ay); }
        
        
    }
}

internal class xNode
{
  public var cx:Number = 0;
  public var cy:Number = 0;  
    
}//xnode