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

Регистрация: Apr 2012
Сообщений: 44
Потому что, как и мой первый вариант, он вращает правильно всего 1 раз.
Код AS3:
		public static function rotateImageAroundCenterOfViewPort(image:Image, value:int):void
		{
			var bounds:Rectangle = image.getBounds(image.parent);
			trace("rotation Begin: bounds.x ", bounds.x, " bounds.y: ", bounds.y);
			// Calculate rotation and shifts
			var shiftByX:Number;
			var shiftByY:Number;
			// Perform rotation
					shiftByX = image.parent.width / 2 - bounds.x;
					shiftByY = image.parent.height / 2 - bounds.y;
			var matrix:Matrix = image.transform.matrix;
			matrix.translate( -shiftByX, -shiftByY);
			matrix.rotate( -image.rotation * DEG_TO_RAD);
			matrix.rotate(value * DEG_TO_RAD);
			matrix.translate(shiftByX, shiftByY);
			image.transform.matrix = matrix;
		}
Ыот во что он превратился у меня. Проблема в неверном вычислении точки поворота (т.е. с точки зрения смотрящего на экран - она верная, с точки зрения компонента - нет). Эту проблему я решил выше "свитчем", но возникла новая - с погрешностью.