Нужно по нажатию на угол спрайта и удерживании мыши поварачивать спрайт в зависимости от текущей позиции мыши. Ну в общем как в фотошопе при FreeTransform картинка поворачиваеться так и мне нужно. Точка поворота цент (хотябы) лучшеб чтоб любая
Вот...
Код AS3:
public function AObject()
{
aRBox.addChild(aRPicture);
addChild(aSprite);//спрайт который нужно поворачивать
addChild(aRBox);//кнопочка в углу спрайта
Active = isActive;
aRBox.addEventListener(MouseEvent.MOUSE_DOWN, goRotate);
}
private function goRotate(event:MouseEvent):void
{
isRotating = true;
stage.addEventListener(MouseEvent.MOUSE_UP , stopRotate);
stage.addEventListener(MouseEvent.MOUSE_MOVE, onRotate );
}
private function onRotate(event:MouseEvent):void
{
if (!isRotating) {return}
var midX:Number = aSprite.x + (aSprite.width / 2);
var midY:Number = aSprite.y + (aSprite.height / 2);
var dx:Number = stage.mouseX - aSprite.x;
var dy:Number = stage.mouseY - aSprite.y;
var Angle : Number = Math.atan2(dy, dx);
Angle = (Angle*180/Math.PI);
trace(Angle);
rotateAround(midX, midY, Angle);
event.updateAfterEvent();
}
private function stopRotate(event:MouseEvent):void
{
isRotating = false;
stage.removeEventListener(MouseEvent.MOUSE_UP , stopRotate);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, onRotate );
}
protected function rotateAround(offsetX:Number,offsetY:Number,toDegrees:Number):void
{
var relDegrees:Number = toDegrees - (this.rotation % 360);
var relRadians:Number = Math.PI * relDegrees / 180;
var M:Matrix = new Matrix(1, 0, 0, 1, 0, 0);
M.rotate(relRadians);
var AC:Point = new Point(offsetX, offsetY);
AC = this.localToGlobal(AC);
AC = this.parent.globalToLocal(AC);
var AB:Point = new Point(this.x, this.y);
var CB:Point = AB.subtract(AC);
CB = M.transformPoint(CB);
AB = AC.add(CB);
trace(this.rotation);
this.rotation = toDegrees;
this.x = AB.x;
this.y = AB.y;
}
Плиз помогите уже дня три маюся
а она переворачиваеться как хочет а не как мне надо
Добавлено через 6 минут
Или вот еще функция для поворота
Код AS3:
function rotateAroundCenter (ob:*, angleDegrees, point:Point)
{
var m:Matrix=ob.transform.matrix;
m.tx -= point.x;
m.ty -= point.y;
m.rotate (angleDegrees*(Math.PI/180));
m.tx += point.x;
m.ty += point.y;
ob.transform.matrix=m;
}
Но с ней тоже ниче не выходит. У мну складывается впечатление что я неправильно нахожу угол... но чет все перепробовал и иинет перерыл. Хелп ми плиз