Voici une fonction qui a l'air de bien marcher. J'ai trouvé beaucoup de fonctions d'intersection entre segments mais aucune marché correctement, c'est la raison pour laquelle je poste celle-ci. 
public function segment2segment( s1:Segment, s2:Segment ) : Bool
{
var s1_x: Float = 0.0;
var s1_y: Float = 0.0;
var s2_x: Float = 0.0;
var s2_y: Float = 0.0;
s1_x =s1.p2.x - s1.p1.x;     s1_y =  s1.p2.y - s1.p1.y;
s2_x = s2.p2.x - s2.p1.x;     s2_y = s2.p2.y - s2.p1.y;
var s: Float = 0.0;
var t: Float = 0.0;
    
s = (-s1_y * (s1.p1.x - s2.p1.x) + s1_x * (s1.p1.y - s2.p1.y)) / (-s2_x * s1_y + s1_x * s2_y);
t = ( s2_x * (s1.p1.y - s2.p1.y) - s2_y * (s1.p1.x - s2.p1.x)) / (-s2_x * s1_y + s1_x * s2_y);
if (s >= 0 && s <= 1 && t >= 0 && t <= 1) return true;//Collision
else return false; // No collision
}