А почему матрицу нельзя? С контейнерами математику надо применять, сейчас подумаю
Долго думал, а оказалось все очень просто

Код AS3:
package
{
import flash.display.Shape;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.ui.Keyboard;
public class Main extends Sprite
{
public function Main()
{
super();
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(KeyboardEvent.KEY_DOWN, this.keyBoardHandler);
this.obj.graphics.beginFill(0);
this.obj.graphics.drawRect(0, 0, 100, 150);
this.obj.addEventListener(MouseEvent.CLICK, this.mouseClickHandler);
this.container.addChild(this.obj);
super.addChild(this.container);
this.pivot.graphics.beginFill(0xFFFF00);
this.pivot.graphics.drawCircle(0, 0, 3);
this.container.addChild(this.pivot);
}
private function mouseClickHandler(event:MouseEvent):void {
this.container.x = event.stageX;
this.container.y = event.stageY;
this.obj.x = -event.localX;
this.obj.y = -event.localY;
}
private function keyBoardHandler(event:KeyboardEvent):void {
switch (event.keyCode) {
case Keyboard.SPACE:
this.container.rotation += 5;
break;
}
}
private var obj:Sprite = new Sprite();
private var container:Sprite = new Sprite();
private var pivot:Shape = new Shape();
}
}