flash on 2015-8-17

by mutantleg
♥0 | Line 77 | Modified 2015-08-17 08:52:40 | 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/sYjy
 */

package {
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
       
            graphics.clear();
            graphics.lineStyle(2, 0);

            vecLine = new Vector.<xLine>(0,false);       
            
            var ax:Number; var ay:Number; var ta:Number;
            var a:xLine;    var i:int; var num:int;
            for (i=0;i< 16;i+=1)
            {
              a = new xLine();
               ax = Math.random()*265+100;
               ay = Math.random() *265+100;
               ay = i*32;
               a.cx = ax+Math.random()*64; 
               a.cy = ay+Math.random()*64; 
               a.gx = ax+Math.random()*64; 
               a.gy = ay+Math.random()*64; 
                
              vecLine.push(a);  
              
              ta = Math.atan2(a.gy-a.cy, a.gx-a.cx);
              a.ny = -Math.cos(ta);
              a.nx = Math.sin(ta);
     
            }//nexti
            
            

           stage.addEventListener(Event.ENTER_FRAME, onEnter);             
        }//ctor
        
        public var vecLine:Vector.<xLine>;
        
        
        public function onEnter(e:Event):void
        {
            
            graphics.clear();
            graphics.lineStyle(2, 0);
   
            var ax:Number; var ay:Number; var ta:Number;
            var a:xLine;    var i:int; var num:int;
            var b:xLine;

            num = vecLine.length - 1;
            for (i=0;i<num;i+=1)
            {
                a = vecLine[i];
                b = vecLine[i+1];
  //              var d:Number;
 //               d = (a.cx-b.cx)*b.nx + (a.cy-b.cy)*b.ny;
//                if (d < 0)
                if (a.cy < b.cy)
                if (a.gy < b.gy)
                { vecLine[i+1] =a; vecLine[i] = b; }
                
            }//nexti
            
            num = vecLine.length;
            for (i=0;i<num;i+=1)
            {
                a = vecLine[i];
                 graphics.moveTo(a.cx,a.cy);
                 graphics.lineTo(a.gx,a.gy);

                ax = a.cx+(a.gx-a.cx)*0.5;
                ay = a.cy+(a.gy-a.cy)*0.5;
                
                graphics.moveTo(ax,ay);
                graphics.lineTo(ax+a.nx*8,ay+a.ny*8);
                
            }//nexti

            graphics.lineStyle(1, 0);
            for (i=0;i<num;i+=1)
            {
                a = vecLine[i];
                if (a.ny < 0) { continue; }
                ax = a.cx+(a.gx-a.cx)*0.5;
                ay = a.cy+(a.gy-a.cy)*0.5;
                if (i==0){ graphics.moveTo(ax,ay);}
                graphics.lineTo(ax,ay);
            }//nexti            
            
            
            
        }//onenter
        
        
        
    }//classend
}

internal class xLine
{
    public var cx:Number = 0;
    public var cy:Number = 0;
    public var gx:Number = 0;
    public var gy:Number = 0;
    
    public var nx:Number = 0;
    public var ny:Number = 0;
    
}//xline