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

Регистрация: Nov 2009
Сообщений: 56
Все ошибку сам нашел.Если кому интересно или понадобится
Код AS3:
package {
    import flash.geom.*;
	import flash.display.*;
	import flash.events.MouseEvent;
	import fl.motion.*;
    public class MatrixExample extends Sprite {
		public var objectConteiner:Sprite;
		public var point_rotation:Point;
		public var mc:MC;
		public var tMatrix:Matrix
        public function MatrixExample() {
			objectConteiner = new Sprite();
			addChild(objectConteiner);
			mc = new MC();
			objectConteiner.addChild(mc);
			point_rotation = new Point(0,mc.height/2);
			tMatrix = mc.transform.matrix;//надо было матрицу определить 1 раз, а не когда она была в повернутом состоянии
			objectConteiner.addChild(doDrawCircle(point_rotation.x,point_rotation.y));
			objectConteiner.x = 100;
			objectConteiner.y = 100;
			mc.addEventListener(MouseEvent.MOUSE_MOVE,MouseMove);
 
		}	
 
		//рисует кружочек который все время находится стационарно
		//просто для наглядности
		private function doDrawCircle(x:Number,y:Number):DisplayObject {
			var child:Shape = new Shape();
			child.graphics.beginFill(0x999999);
			child.graphics.lineStyle(1, 0x666666);
			child.graphics.drawCircle(x, y, 2);
			child.graphics.endFill();
			addChild(child);
			return child;
		}
		private function MouseMove(e:MouseEvent):void {
			var mousex = e.target.mouseX;
			var mousey = e.target.mouseY;
			var katetA:int = mousey - (point_rotation.y);
			var katetB:int = mousex - (point_rotation.x);
			var ygol:int = Math.tan(katetA/katetB)*(180/Math.PI);
			//tMatrix = mc.transform.matrix; здесь ее каждый раз переопределять не надо
			MatrixTransformer.rotateAroundInternalPoint(tMatrix,point_rotation.x,point_rotation.y,ygol);
			//лучше использовать вращение вокруг внутренней точки
			e.target.transform.matrix = tMatrix;
		}
    }
}