Функция, подобная этой?
function getPositionOffset(rotation:Number, origin:Point):Point
{
var radVal:Number= Math.PI * rotation / 180;
var offsetX:Number = origin.x - origin.x * Math.cos(radVal)
+ origin.y * Math.sin(radVal);
var offsetY:Number = origin.y - origin.x * Math.sin(radVal)
- origin.y * Math.cos(radVal);
return new Point(offsetX, offsetY);
}
Затем вы поворачиваете объект следующим образом:
// original position before any rotation
var originalX:Number = obj.x;
var originalY:Number = obj.y;
// let's say origin for a 100x100 object is 50,50
var origin:Point = new Point(50, 50);
// rotation: 45
var pt:Point = getPositionOffset(45, origin);
obj.rotation = 45;
obj.x = Math.floor(originalX + pt.x);
obj.y = Math.floor(originalY + pt.y);
Ну, это общая идея.Вы могли бы улучшить это, не требуя значений originalX
и originalY
перед вращением и вместо этого рассчитать их (используя текущее вращение и положение).