![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Nov 2009
Сообщений: 56
|
Подскажите пожалуйста, почему когда вращается объект у него происходит смещение.Но по идее он не должен никуда смещаться, а только вращаться вокруг заданной точки.Посмотрите что я не так делаю.
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 function MatrixExample() { objectConteiner = new Sprite(); addChild(objectConteiner); mc = new MC(); objectConteiner.addChild(mc); point_rotation = new Point(0,mc.height/2)//если поставить все 0, то все работает замечательно 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:Number = mousey - (point_rotation.y); var katetB:Number = mousex - (point_rotation.x); var ygol:Number = Math.tan(katetA/katetB)*(180/Math.PI); var tMatrix:Matrix = e.target.transform.matrix; MatrixTransformer.rotateAroundExternalPoint(tMatrix,point_rotation.x,point_rotation.y,ygol); e.target.transform.matrix = tMatrix; } } } |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 56
|
Все ошибку сам нашел.Если кому интересно или понадобится
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; } } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|