Показать сообщение отдельно
Старый 15.01.2014, 13:09
Sonet вне форума Посмотреть профиль Отправить личное сообщение для Sonet Найти все сообщения от Sonet
  № 15  
Ответить с цитированием
Sonet

Регистрация: Apr 2012
Сообщений: 44
А почему вы вращаете _transformContainer да еще и относительно такой точки ( не понимаю, почему учитываются его x и y координаты)? У меня максимально просто случай: изображение и контейнер с установленным scrollRect. Метод будет просто принимать на вход изображение и угол и поворачивать его относительно центра scrollrect (еще одно несоответствие, т.к. у вас scrollRect тоже поворачивается, а мне надо, чтобы я всегда видел прямоугольник, полностью заполненный изображением, которое в свою очередь может быть повернуто).

Я попытался перенести этот код к себе, но у меня не работает ну никак.

Код AS3:
		private static var DEG_TO_RAD:Number = 3.1415926535897932 / 180;
		public static function rotateImageAroundCenterOfViewPort(image:Image, value:int):void
		{
			var xShift:Number = image.x + image.parent.width / 2;
			var yShift:Number = image.y + image.parent.height / 2;
			var matrix:Matrix = image.transform.matrix;
			matrix.translate( -image.x, -image.y);
			matrix.rotate( -image.rotation * DEG_TO_RAD);
			matrix.rotate(value * DEG_TO_RAD);
			matrix.translate(xShift, yShift);
			image.transform.matrix = matrix;
		}
У меня компонент Image лежит внутри контейнера, scrollRect которого - он сам (т.е. прямоугольник (0, 0, w, h)). Вроде по сути все то же самое, но не работает.

Кстати, у вас похоже тоже погрешность накапливается (от этого никуда не деться?) - после нескольких минут вращения изображение прилично так сдвинулось.
Изображения
 


Последний раз редактировалось Sonet; 15.01.2014 в 13:25.