Я слегка озадачен вашим вопросом, но, тем не менее, он интересный.
Есть ли у вас что-то изометрическое, работающее, и вы хотите сделать перспективный проецируемый вид или наоборот? У вас есть перспективный вид и вы хотите изометрии?
В IDE Flash CS4 вы можете играть с несколькими «3D» параметрами. Я собрал несколько мувиклипов в куб, чтобы проиллюстрировать это.
Вот куб, поверните на 45 градусов по оси Y, затем на 45 градусов по оси X, как вы можете видеть на панели трансформации:
Здесь тот же куб с углом перспективы, измененным в группе 3D Положение и вид в Инспекторе свойств справа.
Свойством в IDE можно управлять с помощью actionscript. Каждый DisplayObject имеет свойство transform, которое содержит ссылки для объектов, управляющих свойствами 2D и 3D, такими как: Matrix, Matrix3D, PerspectiveProjection и другие.
Вы можете контролировать искажение перспективы с помощью свойства fieldOfView в PerspectiveProjection.
Предполагая, что клип блока имеет имя box , я мог бы установить его fieldOfView на что-то очень маленькое (допустимые значения больше 0 и меньше 180), и это было бы так.
* * Например, тысяча двадцать восемь
var isometric:PerspectiveProjection = new PerspectiveProjection();
isometric.fieldOfView = 0.00001;
box.transform.perspectiveProjection = isometric;
Обращайтесь к этой статье на devnet . Это также объясняет подход к орбите. В зависимости от того, чего вы пытаетесь достичь, это может быть статья Ральфа Хауверта «Арбол» .
Вот несколько изометрических библиотек as3, таких как FFilmation и as3isolib , но
Я не уверен, что именно вам нужно. Как сказал Antpaw, если вы работаете над чем-то большим, вы можете использовать гибкие 3D API, такие как Papervision или Away3D .
В беспокоя мы сделали забавный изометрический интерфейс для визуализации твитов под названием Twigital . Для этого мы использовали papervision.
UPDATE
Кажется, вам нужно динамически вращаться вокруг оси. Вы можете сделать это с помощью матрицы преобразования. Вот как вы это делаете в 2D :
/**
* Rotates a matrix about a point defined inside the matrix's transformation space.
* This can be used to rotate a movie clip around a transformation point inside itself.
*
* @param m A Matrix instance.
*
* @param x The x coordinate of the point.
*
* @param y The y coordinate of the point.
*
* @param angleDegrees The angle of rotation in degrees.
* @playerversion Flash 9.0.28.0
* @langversion 3.0
* @keyword Matrix, Copy Motion as ActionScript
* @see flash.geom.Matrix
*/
public static function rotateAroundInternalPoint(m:Matrix, x:Number, y:Number, angleDegrees:Number):void
{
var point:Point = new Point(x, y);
point = m.transformPoint(point);
m.tx -= point.x;
m.ty -= point.y;
m.rotate(angleDegrees*(Math.PI/180));
m.tx += point.x;
m.ty += point.y;
}
/**
* Rotates a matrix about a point defined outside the matrix's transformation space.
* This can be used to rotate a movie clip around a transformation point in its parent.
*
* @param m A Matrix instance.
*
* @param x The x coordinate of the point.
*
* @param y The y coordinate of the point.
*
* @param angleDegrees The angle of rotation in degrees.
* @playerversion Flash 9.0.28.0
* @langversion 3.0
* @keyword Matrix, Copy Motion as ActionScript
* @see flash.geom.Matrix
*/
public static function rotateAroundExternalPoint(m:Matrix, x:Number, y:Number, angleDegrees:Number):void
{
m.tx -= x;
m.ty -= y;
m.rotate(angleDegrees*(Math.PI/180));
m.tx += x;
m.ty += y;
}
Код не мой, хотя это Adobe (Роберт Пеннер, я думаю), часть класса MatrixTransformer .
Теперь для 3D это еще проще, потому что класс Matrix3D имеет такие методы вращения, как prependRotation и appendRotation , которые принимают 3 параметра:
- градусы: Number
- ось: Vector3D
- pivotPoint: Vector3D
Таким образом, вы можете легко повернуть прямоугольник на 30 градусов по оси X примерно на 0,0,0 с помощью чего-то вроде:
var m:Matrix3D = box.transform.matrix3D;
m.prependRotation(30,Vector3D.X_AXIS,new Vector3D(0,0,0));
Опять же, ознакомьтесь со статьями devnet, классом Matrix3D и классом Vector3D .
Если вы хотите получить более глубокие знания о векторах, матрицах и преобразованиях, вы можете проверить 3D Math Primer , все это действительно хорошо объяснено, и это просто математика, так что вещи, которые вы Learn удобны в любой 3D-настройке (чистая as3, away3d, papervision, openGL и т. д.).
НТН,
George