瞭解 Flash Player 和 AIR 執行階段中的 3D 顯示物件

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

在 Flash Player 10 之前的 Flash Player 版本以及 Adobe AIR 1.5 之前的 Adobe AIR 版本中,顯示物件具有 x y 兩個屬性,這兩個屬性會決定物件在 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 範圍做為三角形網格。