Как правильно вращать спрайт вокруг центра, чтобы в его чайлдах трансформация тоже отражалась адекватно?
Например есть два спрайта: желтый круг и желтая окружность. Оба 50х50. Оба помещены в центр сцены. Желтый круг - чайлд сцены, желтая окружность - чайлд желтого круга. Поворачиваю круг на 90 градусов вокруг его центра. Он поворачивается правильно, но за счет того (насколько я понял) что матрица считается для левого верхнего угла, появляется смещение, которое наследует его чайлд (окружность) и за счет этого она убегает в сторону. На левой части рисунка показано, как они располагались до вращения, на правой - после. Как компенсировать появляющееся смещение?
Вращение делается переносом центра спрайта в 0, поворотом, возвращением обратно:

Код AS3:
Krug.RotateAround(Krug.GetPosition(),new pNumber(90),true);
internal function RotateAround(Axis:Vector2,Angle:pNumber,Once:Boolean):Boolean {
var End:Boolean = Once;
var MoveVector:Vector2 = new Vector2();
Vector2.Vec2Subtract(Axis,new Vector2(0.0,0.0),MoveVector);
var matrix:Matrix = new Matrix();
matrix.identity();
matrix.translate(MoveVector.x,MoveVector.y);
CountWorldMatrix(null,matrix,null);
var RotAngle:Number = Angle.v;
if(Once==false) {
}
RotAngle *= Math.PI/180.0;
var Rot:Matrix = new Matrix();
Rot.identity();
Rot.rotate(RotAngle);
CountWorldMatrix(null,Rot,null);
matrix.identity();
matrix.translate(Axis.x,Axis.y);
CountWorldMatrix(null,matrix,null);
return End;
}
CountWorldMatrix - умножение матрицы объекта на передаваемую
pNumber - переопределенный Number
Vector2 - переопределенный Point
GetPosition() - координаты центра спрайта в системе координат сцены