瞭解 Flash Player 和 AIR 執行階段的 3D 功能

Flash Player 10 以及更新的版本,Adobe AIR 1.5 以及更新的版本

在 Flash Player 10 之前的 Flash Player 版本以及 Adobe AIR 1.5 之前的 Adobe AIR 版本中,顯示物件具有 xy 兩個屬性,這兩個屬性會決定物件在 2D 平面上的位置。從 Flash Player 10 和 Adobe AIR 1.5 開始,每個 ActionScript 顯示物件都有 z 屬性,可讓您決定物件在 z 軸 (通常可用來表示深度或距離) 上的位置。

Flash Player 10 和 Adobe AIR 1.5 新增了 3D 效果支援。不過,顯示物件本質上都是平面的。每個顯示物件 (例如 MovieClip 或 Sprite 物件) 最終都會在單一平面上以二維方式顯示。3D 功能可讓您對這些平面物件,以三維方式進行放置、移動、旋轉和其它變形動作。此外,也能讓您管理 3D 座標點,並將其轉換成 2D 的 x、y 座標,如此即可將 3D 物件投影在 2D 檢視上。您可以使用這些功能模擬多種 3D 體驗。

ActionScript 使用的 3D 座標系統不同於其它系統。在 ActionScript 中使用 2D 座標時,x 值會隨著您沿著 x 軸向右移動而增加,而 y 值會隨著您沿著 y 軸向下移動而增加。3D 座標系統保留了這些慣例,並且新增了 z 軸,其值會隨著您遠離視點而增加。

ActionScript 3D 座標系統中 x、y 和 z 軸的正數方向。
A.
+Z 軸

B.
原點

C.
+X 軸

D.
+Y 軸

備註: 請注意,Flash Player 和 AIR 一律會以圖層來表示 3D。這表示,如果在顯示清單中,物件 A 位於物件 B 之前,那麼無論這兩個物件的 z 軸值為何,Flash Player 或 AIR 一律會將 A 顯示在 B 前面。若要解決顯示清單順序和 z 軸順序之間的這種衝突,請使用 transform.getRelativeMatrix3D() 方法儲存 3D 顯示物件的圖層後,再重新排列其順序。如需詳細資訊,請參閱使用 Matrix3D 物件以重新排列顯示物件

下列 ActionScript 類別可支援新的 3D 相關功能:

  1. flash.display.DisplayObject 類別包含 z 屬性和新的旋轉及縮放屬性,可讓您在 3D 空間中操作顯示物件。DisplayObject.local3DToGlobal() 方法可提供一種簡單的方式,在 2D 平面上投影 3D 幾何。

  2. flash.geom.Vector3D 類別可以當做資料結構使用,讓您管理 3D 座標點。此外,這個類別也支援向量數學。

  3. flash.geom.Matrix3D 類別支援複雜的 3D 幾何變形,例如旋轉、縮放和轉移。

  4. flash.geom.PerspectiveProjection 可以控制在 2D 檢視上對應 3D 幾何時所搭配的參數。

您可以使用兩種不同方式,在 ActionScript 中模擬 3D 影像:

  1. 在 3D 空間中排列平面物件並製成動畫。這個方式包含使用顯示物件的 x、y 和 z 屬性,或使用 DisplayObject 類別設定旋轉和縮放屬性,將顯示物件製成動畫。若使用 DisplayObject.transform.matrix3D 物件,還可以產生更複雜的動作。DisplayObject.transform.perspectiveProjection 物件可讓您自訂以 3D 透視來繪製顯示物件的方式。對於主要以平面組成的 3D 物件,當您希望將該物件製成動畫時,請使用這個方式。這個方式的範例包含 3D 影像展示或在 3D 空間中排列的 2D 動畫物件。

  2. 透過 3D 幾何產生 2D 三角形,然後使用紋理顯示這些三角形。若要使用這個方式,首先您必須定義和管理 3D 物件的相關資料,然後再將該資料轉換成 2D 三角形以顯示在螢幕上。您可以將點陣圖紋理對應至這些三角形,然後再使用 Graphics.drawTriangles() 方法,將這些三角形繪製成為圖形物件。這個方式的範例包含從檔案載入 3D 模型資料,並於螢幕上顯示該模型,或者產生及繪製 3D 範圍做為三角形網格。