flash on 2014-12-8

by mutantleg
♥0 | Line 76 | Modified 2014-12-08 05:34:27 | 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/71IL
 */

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


        public var vecBlob:Vector.<xBlob>;        
        
        public var cx:Number = 230;
        public var cy:Number = 64;
        
        public var gt:int = 0;
        
        public function onEnter(e:Event):void
        {
            graphics.clear();
            graphics.lineStyle(2, 0);
            
            gt += 1;
            
            var ax:Number; var ay:Number;
            
            ax = 230; ay = 230;
            
            graphics.drawCircle(ax,ay, 16);

            var ang:Number;            
            var mx:Number; var my:Number;
            mx = stage.mouseX;
            my = stage.mouseY;
            
            ang = Math.atan2(my-ay, mx-ax);
            
            graphics.moveTo(ax,ay);
            graphics.lineTo(ax+Math.cos(ang)*8,ay+Math.sin(ang)*8);
            
           
            
            graphics.drawCircle(cx, cy, 16);
 
            ang = Math.atan2(cy-my, cx-mx);
            graphics.moveTo(cx,cy);
            graphics.lineTo(cx+Math.cos(ang)*8, cy+Math.sin(ang)*8);
            
            var kx:Number; var ky:Number;
            var mw:Number;
            mw = 30; //Math.abs(Math.sin(gt*0.1)*80);
            kx = mx + Math.cos(ang) * (30+mw);
            ky = my + Math.sin(ang) * (30+mw);
            
            graphics.drawCircle(kx, ky, 4);
            
            cx += (kx -cx)*0.1;
            cy += (ky -cy)*0.1;
            
            
           // graphics.moveTo(ax,ay);
          //  graphics.lineTo(cx,cy);
            
            
            
            var i:int; var num:int; var a:xBlob; var b:xBlob;
            num = vecBlob.length - 1;
            
            a = vecBlob[0]; a.cx = cx; a.cy = cy;
            a = vecBlob[num]; a.cx = ax; a.cy = ay;
            
            var m:int;
            for (m = 0; m < 16; m++)
            for (i = 0; i < num; i++)
            {
               a = vecBlob[i];
               b = vecBlob[i+1];
                
               kx = (a.cx + b.cx) *0.5;
               ky = (a.cy + b.cy) *0.5;
                
               a.cx += (kx-a.cx)*0.2;
               a.cy += (ky-a.cy)*0.2;
                
               b.cx += (kx-b.cx)*0.2;
               b.cy += (ky-b.cy)*0.2;
                
                
                /*
               ang = Math.atan2(b.cy-a.cy, b.cx-a.cx); 
                
               kx = b.cx + Math.cos(ang) * 32;
               ky = b.cy + Math.sin(ang) * 32;
               
               a.cx += (kx-a.cx)*0.1;
               a.cy += (ky-a.cy)*0.1;
               */
                
                
            }//nexti
            
            num = vecBlob.length;
            for (i = 0; i < num; i++)
            {
               a = vecBlob[i];
               graphics.drawCircle(a.cx,a.cy,12);
            }//nexti2  
            
        }//onenter
        
        
        public function getMag(ax:Number, ay:Number):Number
        { return Math.sqrt(ax*ax+ay*ay); }
        
        
    }//classend
}

internal class xBlob
{
   public var cx:Number = 0;
   public var cy:Number = 0;  
    
}//xblob