На базе все того же кода.
Есть клипы clip1 и clip2

Код:
updateArrow = function (X1, Y1, X2, Y2)
{
this.clear();
this.lineStyle(1, 0xFF0000);
angle = Math.floor(180 * Math.atan2((X2 - X1), (Y2 - Y1)) / Math.PI);
len = Math.sqrt((X2 - X1) * (X2 - X1) + (Y2 - Y1) * (Y2 - Y1));
for (i = 0; i < 150; i++) if (!clip2.hitTest(SIN(angle) * (len - i) + X1, COS(angle) * (len - i) + Y1, true))break;
this.arrowTo(X1, Y1, SIN(angle) * (len - i) + X1, COS(angle) * (len - i) + Y1);
}
clip1.onPress = clip2.onPress = function ()
{
startDrag(this);
updateArrow(clip1._x + clip1._width / 2, clip1._y + clip1._height / 2, clip2._x + clip2._width / 2, clip2._y + clip2._height / 2);
onMouseMove = function (){updateArrow(clip1._x + clip1._width / 2, clip1._y + clip1._height / 2, clip2._x + clip2._width / 2, clip2._y + clip2._height / 2);}
}
clip1.onRelease = clip2.onRelease = clip1.onReleaseOutside = clip2.onReleaseOutside = function ()
{
stopDrag();
delete onMouseMove;
}
updateArrow(clip1._x + clip1._width / 2, clip1._y + clip1._height / 2, clip2._x + clip2._width / 2, clip2._y + clip2._height / 2);