flash on 2015-8-23
♥0 |
Line 46 |
Modified 2015-08-23 11:53:04 |
MIT License
archived:2017-03-30 11:43:47
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
}