А вот самый абстрактный вариант, что у меня получился

Для тех несуществующих случаев, когда изображение в обоих контейнерах может быть не на нулевых коррдинатах.

Код AS3:
private function onMoveInParentBox1(event:MouseEvent):void
{
var currentPoint : Point = new Point(stage.mouseX, stage.mouseY);
var diff : Point = currentPoint.subtract(_prevPoint);
var boxBound : Rectangle = box1.getBounds(stage);
var parentBound : Rectangle = parentBox.getBounds(stage);
var out : Point = new Point();
boxBound.offsetPoint(diff);
if(boxBound.containsRect(parentBound) == false)
{
var unionBound : Rectangle = parentBound.union(boxBound);
var xMul : Number = unionBound.x < boxBound.x ? 1 : -1;
var yMul : Number = unionBound.y < boxBound.y ? 1 : -1;
out.x = (unionBound.width - boxBound.width) * xMul;
out.y = (unionBound.height - boxBound.height) * yMul;
}
box1.x += diff.x - out.x;
box1.y += diff.y - out.y;
_prevPoint = currentPoint;
}