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

Код AS3:
public class Main extends Sprite
{
private var center:Point = new Point(200, 200);
private var R:Number = 100;
private var sample:Sprite = new Sprite();
private var prevMousePoint:Point;
public function Main():void
{
graphics.beginFill(0x000000, 0.1);
graphics.drawCircle(center.x, center.y, R);
sample.buttonMode = true;
sample.graphics.beginFill(0x008000);
sample.graphics.drawRect(0, 0, 60, 40);
sample.x = 200;
sample.y = 200;
sample.rotation = 30;
addChild(sample);
sample.addEventListener(MouseEvent.MOUSE_DOWN, sample_mouseDown);
}
private function sample_mouseDown(e:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUp);
// если нужна потеря драга при уводе мышки
//sample.addEventListener(MouseEvent.MOUSE_OUT, stage_mouseUp);
prevMousePoint = new Point(mouseX, mouseY);
}
private function stage_mouseUp(e:MouseEvent):void
{
stage.removeEventListener(MouseEvent.MOUSE_UP, stage_mouseUp);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMove);
}
private function stage_mouseMove(e:MouseEvent):void
{
// двигаем как в обычном драге
sample.x += mouseX - prevMousePoint.x;
sample.y += mouseY - prevMousePoint.y;
prevMousePoint = new Point(mouseX, mouseY);
// сдвигаем, чтоб все углы вместились
var rec:Rectangle = sample.getBounds(sample);
var corners:Array = [
sample.localToGlobal(rec.topLeft),
sample.localToGlobal(new Point(rec.right, rec.top)),
sample.localToGlobal(rec.bottomRight),
sample.localToGlobal(new Point(rec.left, rec.bottom))
];
var dir:Number = Math.atan2(sample.y - center.y, sample.x - center.x);
var dX:Number = Math.cos(dir);
var dY:Number = Math.sin(dir);
for (var i:int = 0; i < 4; i++)
{
var p:Point = corners[i];
while (Point.distance(center, p) > R)
{
p.x -= dX;
p.y -= dY;
sample.x -= dX;
sample.y -= dY;
}
}
}
}