Класс вращения объекта вокруг произвольной точки
Спасибо выражается Wolsh за направление.
package com.in4core.transformation { import fl.motion.MatrixTransformer; import flash.display.DisplayObject; import flash.geom.Matrix; import flash.geom.Point; /** * $(c)2011 * * @author in4core * * About : * * RotationPoint is a static class for rotation DisplayObject around freePoint. * For define internal Point use RotationPoint.internalPoint property. * For define internal Matrix use RotationPoint.internalMatrix property. * For begin rotation use RotationPoint.rotateAroundPoint method. * * ... * version 1.0 */ public class RotationPoint { private static var _defaultPoint:Point = new Point(0, 0); private static var _defaultMatrix:Matrix = new Matrix(); private static var _localMatrix:Matrix = new Matrix(); public static function set internalPoint ( p : Point ):void { _defaultPoint = p; } public static function set internalMatrix ( m : Matrix ) : void { _defaultMatrix = m; } public static function rotateAroundPoint ( disObj : DisplayObject , angle : Number ):void { disObj.transform.matrix = _defaultMatrix; _localMatrix = disObj.transform.matrix; MatrixTransformer.rotateAroundInternalPoint ( _localMatrix , _defaultPoint.x, _defaultPoint.y , angle ); disObj.transform.matrix = _localMatrix; } private static const VERSION = 1.0; } }
если точка вращения не меняется достаточно задать ее 1 раз. Если структура объекта не меняется ( ширина , высота, скейл...) матрицу задаем тоже только единожды, иначе матрицу нужно перезадавать.
Всего комментариев 55
Комментарии
22.04.2011 01:19 | |
Кажется так: вокруг точки лежащей в координатной
|
|
Обновил(-а) fish_r 22.04.2011 в 11:04
|
22.04.2011 03:45 | |
а чем вам мой класс не подходит? юзайте и все
|
22.04.2011 06:41 | |
Ничего не имею против вашего класса. Но меня интересовал не результат, а процесс.
|
22.04.2011 18:54 | |
23.04.2011 08:34 | |
Вообще, говоря, сдаётся мне, что метод MatrixTransformer.rotateAroundInternalPoint и был написан для того, чтобы сократить код, ведь он всего то требует - матрицу, координаты и угол поворота. А вы это в целый класс размазали.
Какую, по сути, задачу решает ваш класс? В параметрах ему надо передать почти то же, что и в указанный метод. Да ещё и объект Point создавать ко всему прочему. Всё, что он выносит из вызывающего класса это - создание переменной содержащей изначальную матрицу (и это не так, потому, что в вызывающем классе её хранить все же придется, так как ваш класс её хранить не умеет) и присвоение результирующей матрицы объекту. И ради этого 50 строк кода? Не обижайтесь, in4core, но ваш код бесполезен с любой точки зрения, его можно рассматривать лишь как ваше собственное, синтаксическое упражнение по написанию кода. Однако польза от вашего блога есть, он , в числе прочего, помог мне разобраться с what is the matrix. |
|
Обновил(-а) fish_r 23.04.2011 в 14:38
|
Последние записи от in4core
- Система диалогов, создаем подобие old School типа Fallout. (07.05.2014)
- MVC в игорной индустрии (27.11.2012)
- Якорь мне .... ))) Или History API (06.11.2012)
- FSD - учим php/sql (28.06.2012)
- I4Logger - простой и компактный логгер (06.05.2012)