В примере, если зажать мышь и потянуть, создается прямоугольная форма, при нажатии на кнопку, форма делает поворот. Вращается она из точки 0,0. Нужно, чтобы форма вращалась по центру. А в идеале пивот вращения может находиться в произвольном месте.

Код AS3:
import flash.events.MouseEvent;
import flash.display.Sprite;
import flash.text.TextField;
import com.greensock.TweenMax;
stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
var obj:Sprite;
var btn:Sprite = simpleButton();
addChild(btn);
btn.addEventListener(MouseEvent.CLICK, initRotate);
btn.x = (stage.stageWidth/2) - (btn.width/2);
btn.y = 200;
function initRotate(e:MouseEvent):void {
if(obj != null) TweenMax.to(obj, 1, {rotation:90});
}
function onDown(e:MouseEvent):void {
if(e.target is Sprite) return;
obj = new Sprite();
addChild(obj)
obj.x = mouseX;
obj.y = mouseY;
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
}
function onMove(e:MouseEvent):void {
obj.graphics.clear();
obj.graphics.beginFill(0x0);
obj.graphics.drawRect(0, 0, obj.mouseX, obj.mouseY);
}
function onUp(e:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_UP, onUp);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove);
}
function simpleButton():Sprite {
var sp:Sprite = new Sprite();
sp.buttonMode = true;
sp.graphics.beginFill(0xCCCCCC);
sp.graphics.drawRect(0,0,100,20);
sp.graphics.endFill();
var txt:TextField = new TextField();
sp.addChild(txt);
txt.mouseEnabled = false;
txt.text = "ROTATE";
txt.autoSize = "left"
txt.x = (sp.width/2) - (txt.width/2);
return sp;
}