на первой странице, я привел пример кода пересечения квадрата линией(бесконечной).
теперь же вот код пересечения квадрата отрезком:
ловите

Код AS1/AS2:
//точки отрезка:
var p0:MovieClip = createPoint(170,270);
var p1:MovieClip = createPoint(300,100);
//точки квадрата:
var a:MovieClip = createPoint(200,200);
var b:MovieClip = createPoint(300,200);
var c:MovieClip = createPoint(300,300);
var d:MovieClip = createPoint(200,300);
onEnterFrame = function()
{
_root.clear();
var hit:Boolean = true;
var dx:Number = p1._y-p0._y;
var dy:Number = p0._x-p1._x;
var s0:Number = (a._x-p0._x)*dx+(a._y-p0._y)*dy;
var s1:Number = (b._x-p0._x)*dx+(b._y-p0._y)*dy;
var s2:Number = (c._x-p0._x)*dx+(c._y-p0._y)*dy;
var s3:Number = (d._x-p0._x)*dx+(d._y-p0._y)*dy;
if( (s0> 0&&s1> 0&&s2> 0&&s3> 0)||
(s0<=0&&s1<=0&&s2<=0&&s3<=0))hit=false;
s0 = Math.min(
(a._y-d._y)*(p0._x-d._x)+(d._x-a._x)*(p0._y-d._y),
(a._y-d._y)*(p1._x-d._x)+(d._x-a._x)*(p1._y-d._y));
s1 = Math.min(
(b._y-a._y)*(p0._x-a._x)+(a._x-b._x)*(p0._y-a._y),
(b._y-a._y)*(p1._x-a._x)+(a._x-b._x)*(p1._y-a._y));
s2 = Math.min(
(c._y-b._y)*(p0._x-b._x)+(b._x-c._x)*(p0._y-b._y),
(c._y-b._y)*(p1._x-b._x)+(b._x-c._x)*(p1._y-b._y));
s3 = Math.min(
(d._y-c._y)*(p0._x-c._x)+(c._x-d._x)*(p0._y-c._y),
(d._y-c._y)*(p1._x-c._x)+(c._x-d._x)*(p1._y-c._y));
if(hit&&(s0>0||s1>0||s2>0||s3>0))
hit = false;
beginFill((hit)?0xff0000:0x00ff00);
moveTo(a._x,a._y);
lineTo(b._x,b._y);
lineTo(c._x,c._y);
lineTo(d._x,d._y);
endFill();
lineStyle(1);
moveTo(p0._x,p0._y);
lineTo(p1._x,p1._y);
}
function createPoint(x:Number,y:Number):MovieClip
{
var i:Number = getNextHighestDepth();
var p:MovieClip = createEmptyMovieClip("point"+i.toString(),i);
p.beginFill(0);
p.lineTo(7,0);
p.lineTo(0,7);
p.endFill();
p._x = x;
p._y = y;
p.onPress = function(){this.startDrag();}
p.onMouseUp = function(){this.stopDrag();}
return p;
}