Показать сообщение отдельно
Старый 13.11.2010, 15:16
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Может поможет такой вариант. Тут создаётся прямоугольник, который постоянно крутиться, а клик по сцене - задаёт новую точку вокруг которой он будет крутится.
Код AS3:
package 
{
	import fl.motion.MatrixTransformer;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Matrix;
	import flash.geom.Point;
 
	/**
	 * ...
	 * @author Samana
	 */
	public class Main extends Sprite 
	{
		//точка трансформации для mc
		private var center:Point = new Point(300, 300);
		//матрица
		private var matrix:Matrix = new Matrix();
		//угол на который будет поворачиваться mc
		private var ang:Number = 3;
		//сам спрайт mc
		private var mc:Sprite;
 
		public function Main():void 
		{
			//нарисовал спрайт прямоугольник
			mc = new Sprite();
			mc.graphics.beginFill(0x00FFcc);
			mc.graphics.drawRect(0, 0, 150, 80);
			mc.graphics.endFill();
			//передвинул сюда
			mc.x = 300;
			mc.y = 300;
 
			addChild(mc);
 
			stage.addEventListener(MouseEvent.CLICK, newPoint)
			stage.addEventListener(Event.ENTER_FRAME,rotate)
		}
		private function newPoint(e:MouseEvent):void 
		{
			//новая точка трансформации для поворота
			center.x = mouseX;
			center.y = mouseY;
		}
 
		private function rotate(e:Event):void 
		{
			//беру текущую матрицу mc
			matrix = mc.transform.matrix;
			//задаю нувую точку для поворота матрицы, и угол 
			MatrixTransformer.rotateAroundExternalPoint(matrix, center.x, center.y, ang);
			//применяю изменившуюся матрицу к mc
			mc.transform.matrix = matrix;
		}
	}
}