Wolsh спасибо большое. буду разбираться
Добавлено через 44 минуты
Wolsh что то косячит немного, или я не верно делаю

Код AS3:
function click(e:Event) {
centerRotate ( sprite , n )
n += 90
}
При первом повороте нормально, при втором уже нет, а при третьем вообще улетает неясно куда
Добавлено через 2 часа 9 минут
Решено. Вот аналог вашего класса

Код AS3:
private var _startPoint:Point = new Point(0,0);
public static function set externalPoint(p:Point) {
_startPoint = p; // если крутим по центру передаем суда половину ширины и высоты
}
public static function rotateUserPoint (obj:DisplayObject , angle:int):void
{
obj.transform.matrix = new Matrix();
var mat:Matrix = obj.transform.matrix;
MatrixTransformer.rotateAroundInternalPoint(mat, _startPoint.x, _startPoint.y, angle);
obj.transform.matrix = mat;
}
Пример

Код AS3:
var n:int = 0;
RotationClass.externalPoint = new Point(sprite.width/2, sprite.height/2);
sprite.addEventListener(Event.ENTER_FRAME , go)
function go(e:Event) {
RotationClass.rotateUserPoint ( e.currentTarget , n )
n += 2;
}