flash on 2015-8-23

by mutantleg
♥0 | Line 46 | Modified 2015-08-23 11:53:04 | 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/dJsf
 */

package {
    import flash.events.Event;
    import flash.display.Sprite;
    public class FlashTest extends Sprite {
        public function FlashTest() {
            
            
            stage.addEventListener(Event.ENTER_FRAME, onEnter);
        }//ctor
        
        public var x0:Number = 0; 
        public var y0:Number = 0; 
        public var x1:Number = 0; 
        public var y1:Number = 0; 
        
        
        public function clipLine(ax:Number, ay:Number, nx:Number, ny:Number):int
        {
          var ta:Number; var tb:Number;  var t:Number;
            
            ta = (x0-ax)*nx + (y0 -ay) * ny;
            tb = (x1-ax)*nx + (y1-ay) * ny;
            
            if (ta <= 0 && tb <= 0) { return -1; }
            if (ta > 0 && tb > 0) { return 1; }     
            
            t =  ta / ( (x0- x1)*nx + (y0-y1)* ny); 
            
            if (ta <= 0)   {   x0 = x0 + (x1-x0) * t;   y0 = y0 + (y1-y0) * t; }
            else          {   x1 = x0 + (x1-x0) * t;   y1 = y0 + (y1-y0) * t; }
                                           
            return 0;
        }//clipline
        
        
        public function onEnter(e:Event):void
        {
            graphics.clear();
            graphics.lineStyle(2, 0);
            
            x0 = 100; y0 = 120;
            x1 = 300; y1 = 300;
      
            graphics.lineStyle(1, 0x808080);
            
            graphics.moveTo(x0, y0);
            graphics.lineTo(x1, y1);
      
      
            graphics.lineStyle(2, 0);
  
            var k:int;              
            var mx:Number; var my:Number;
            mx = stage.mouseX; my = stage.mouseY;
   
            graphics.moveTo(mx, 0);   graphics.lineTo(mx, 400);        
            graphics.moveTo(mx+100, 0);   graphics.lineTo(mx+100, 400);    
            graphics.moveTo(0, my);   graphics.lineTo(400, my);        
            
            k = clipLine(mx,my, 1, 0);     if (k < 0) { return; }
            k = clipLine(mx+100,my, -1, 0);     if (k < 0) { return; }
            k = clipLine(mx,my, 0, 1);     if (k < 0) { return; }
            
            graphics.moveTo(x0, y0);      graphics.lineTo(x1, y1);
            
            
            
            
        }//onenter
        
        
    }//classend
}