我對你的問題有些困惑,但它仍然很有趣。
你有什麼東西等距工作,想渲染透視投影視圖或其他方式?你有一個透視圖,想要去等距?
在Flash CS4 IDE中,您可以使用「3D」幾個參數進行播放。爲了說明這一點,我將一堆MovieClip組裝成一個立方體。
這裏是立方體,旋轉在Y上45度,然後以45度的X,你可以在變換面板中看到:
這裏是相同的立方體,與透視角度在右側的屬性檢查器中的3D位置和視圖組中更改。
IDE中的屬性可通過動作進行控制。每個DisplayObject都有一個transform屬性,該屬性保存控制2D和3D屬性的對象的引用,如:Matrix,Matrix3D,PerspectiveProjection等。
您可以通過PerspectiveProjection的fieldOfView屬性來控制透視變形。
假設框剪輯被命名爲框,我可以將它的fieldOfView設置爲非常小的值(因爲允許的值大於0且小於180),那就是它。
例如
var isometric:PerspectiveProjection = new PerspectiveProjection();
isometric.fieldOfView = 0.00001;
box.transform.perspectiveProjection = isometric;
對於軌道運行,請查看此article on devnet。它解釋了一種繞軌道的方法。根據您要達到的目標,它可能爲Ralph Hauwert's Arcball article。
這裏有幾個as3等距圖書館像FFilmation和as3isolib,但 我不確定你需要什麼。作爲antpaw是說,如果你在更大的東西的工作,你可能會使用靈活的3D API,如Papervision或Away3D。
在disturb我們取得了有趣的等距接口,用於可視化被稱爲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個參數:
- 度:數
- 軸:的Vector3D
- pivotPoint:Vector3D
所以你可以很容易地旋轉一個方框30度的X軸約0,0,0 w第i個像:
var m:Matrix3D = box.transform.matrix3D;
m.prependRotation(30,Vector3D.X_AXIS,new Vector3D(0,0,0));
再次,檢查了國際信息發展網的文章中,Matrix3D class和Vector3D類。
如果你想深入瞭解有關矢量,矩陣和變換的知識,你可以查看3D Math Primer,整個事情都很好解釋,它只是數學,所以你學到的東西在任何3D設置都很方便(純as3,away3d,papervision,openGL等)。
HTH, 喬治
聽起來就像是圍繞位於對象左上角的註冊點旋轉。 – Aaron 2009-12-21 16:34:13