flash on 2015-2-12

by mutantleg
♥0 | Line 76 | Modified 2015-02-12 04:54:31 | 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/18Am
 */

package {
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
            vec = new Vector.<xPnt>(16,false);
            var i:int; var num:int; var a:xPnt;
            num = vec.length;
            cx = 0; cy = 0;
            for (i =0; i<num; i++)
            {
              a = new xPnt(); vec[i] = a;
              a.cx = Math.random()*300+40;
              a.cy = Math.random()*300+40;   
              cx+=a.cx; cy+=a.cy;
            }
            cx/=num; cy/=num;
 
             sortPnt();
            
            stage.addEventListener(MouseEvent.CLICK, onClick);
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
        
        public function onClick(e:MouseEvent):void
        {
            cx = stage.mouseX; cy = stage.mouseY;
            sortPnt();
        }//onclick
        
        
        public function comp(a:xPnt, b:xPnt):Number
        {
          if (a.ang < b.ang) { return -1;}
          if (a.ang > b.ang) { return 1; }
          return 0;   
        }
  
        public function sortPnt():void
        {
            var i:int; var num:int; var a:xPnt;
            num = vec.length;
            for (i =0; i<num; i++)
            {
              a = vec[i] ;
              a.ang = Math.atan2(cy-a.cy,cx-a.cx);
            }
            vec = vec.sort(comp);
        }//sortpnt      
  
        
        public var vec:Vector.<xPnt>;
        
        public var cx:Number = 0;
        public var cy:Number = 0;
        
        public function onEnter(e:Event):void
        {
            graphics.clear();
            graphics.lineStyle(2, 0);
            
            graphics.drawCircle(cx,cy,8);
            
            var i:int; var num:int; var a:xPnt;
            num = vec.length;
            for (i =0; i<num; i++)
            {
              a = vec[i] ;
              graphics.drawCircle(a.cx,a.cy,4);
              graphics.moveTo(a.cx,a.cy);
              graphics.lineTo(a.cx+Math.cos(a.ang)*8,a.cy+Math.sin(a.ang)*8);
            }

            graphics.beginFill(0,0.2);
            a = vec[0];  graphics.moveTo(a.cx,a.cy);
            for (i =1; i<num; i++)
            { a = vec[i];  graphics.lineTo(a.cx,a.cy);  }            
            a = vec[0];  graphics.lineTo(a.cx,a.cy);
            graphics.endFill();
            
        }//onenter
        
        
    }//classend
}

internal class xPnt
{
    public var cx:Number = 0;
    public var cy:Number = 0;
    public var ang:Number = 0;
}//xpnt