
Код AS3:
package ru.wolsh.display.utils
{
import flash.display.DisplayObject;
/* * * * * * * * * *
* *
* @author wolsh *
* *
* v. 21.10.2010 *
* *
\* * * * * * * * * */
public function centerRotate (object:DisplayObject, angle:Number) : void
{
var rad:Number = Math.PI / 180;
// return object to default
var currentAngle:Number = object.rotation * rad;
object.rotation = 0;
var oX:Number = object.width / 2;
var oY:Number = object.height / 2;
var oS:Number = Math.sin(currentAngle);
var oC:Number = 1 - Math.cos(currentAngle);
object.x -= oX * oC + oY * oS;
object.y -= oY * oC - oX * oS;
// rotate object
var r:Number = angle * rad;
var s:Number = Math.sin(r);
var c:Number = 1 - Math.cos(r);
object.rotation = angle;
object.x += oX * c + oY * s;
object.y += oY * c - oX * s;
}
}