套件 | flash.display |
類別 | public class Stage3D |
繼承 | Stage3D EventDispatcher Object |
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 11, AIR 3 |
Stage3D 類別可為使用 Context3D
類別顯示的內容,提供高效能的顯示表面。如果可以,這個表面會使用圖像處理單元 (GPU)。執行階段舞台會提供固定數量的 Stage3D
物件。實體數目會依裝置類型而有所不同。桌上型電腦一般提供四個 Stage3D 實體。
繪製到 Stage3D
檢視區域的內容會依預先定義的順序,與其他可見的圖形物件複合。距離最遠的是所有 StageVideo
表面。Stage3D
接下來會顯示傳統的 Flash 顯示物件內容,該內容會出現在其他所有內容頂端的最後。StageVideo 與 Stage3D 圖層是以不透明的方式顯示;因此檢視區域會完全遮住其下任何其他 Stage3D 或 StageVideo 檢視區域。顯示清單內容則會以透明度方式顯示。
注意:您可以使用 Stage3D 物件的 visible
屬性,暫時從顯示中將它移除,例如在使用 StageVideo 類別播放視訊時。
Stage3D
物件是使用其 stage3Ds
成員,從播放程式舞台擷取。使用 Stage3D 實體可以要求關聯的顯示內容,並將顯示放置在執行階段舞台上。
相關 API 元素
屬性 | 定義自 | ||
---|---|---|---|
constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | ||
context3D : Context3D [唯讀]
與這個 Stage3D 實體關聯的 Context3D 物件。 | Stage3D | ||
visible : Boolean
指定這個 Stage3D 物件是否可見。 | Stage3D | ||
x : Number
舞台上 Stage3D 顯示的水平座標,以像素為單位。 | Stage3D | ||
y : Number
舞台上 Stage3D 顯示的垂直座標,以像素為單位。 | Stage3D |
方法 | 定義自 | ||
---|---|---|---|
Stage3D() | Stage3D | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
會在 EventDispatcher 物件註冊事件偵聽程式,以便讓偵聽程式收到事件的通知。 | EventDispatcher | ||
會將事件傳送到事件流程。 | EventDispatcher | ||
會檢查 EventDispatcher 物件是否有對特定的事件類型註冊偵聽程式。 | EventDispatcher | ||
指出物件是否有已定義的指定屬性。 | Object | ||
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | ||
指出指定的屬性是否存在,以及是否可列舉。 | Object | ||
會從 EventDispatcher 物件移除偵聽程式。 | EventDispatcher | ||
要求建立這個 Stage3D 實體的 Context3D 物件。 | Stage3D | ||
要求建立這個 Stage3D 實體的 Context3D 物件。 | Stage3D | ||
為迴圈作業設定動態屬性的可用性。 | Object | ||
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | ||
會傳回指定之物件的字串形式。 | Object | ||
會傳回指定之物件的基本值。 | Object | ||
檢查此 EventDispatcher 物件是否已註冊事件偵聽程式,或者此物件的任何祖系已為特定事件類型註冊事件偵聽程式。 | EventDispatcher |
事件 | 摘要 | 定義自 | ||
---|---|---|---|---|
[廣播事件] 當 Flash Player 或 AIR 應用程式取得作業系統焦點並成為作用中時傳送。 | EventDispatcher | |||
在建立顯示內容時傳送。 | Stage3D | |||
[廣播事件] 當 Flash Player 或 AIR 應用程式失去作業系統焦點並成為非作用中時傳送。 | EventDispatcher | |||
在要求顯示內容失敗時傳送。 | Stage3D |
context3D | 屬性 |
visible | 屬性 |
x | 屬性 |
x:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 11, AIR 3 |
舞台上 Stage3D 顯示的水平座標,以像素為單位。
此屬性預設為零。
實作
public function get x():Number
public function set x(value:Number):void
擲回值
ArgumentError — 如果位置不在 [-8191..8191] 間隔,則會擲回錯誤。
|
y | 屬性 |
y:Number
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 11, AIR 3 |
舞台上 Stage3D 顯示的垂直座標,以像素為單位。
此屬性預設為零。
實作
public function get y():Number
public function set y(value:Number):void
擲回值
ArgumentError — 如果位置不在 [-8191..8191] 間隔,則會擲回錯誤。
|
Stage3D | () | 建構函式 |
public function Stage3D()
requestContext3D | () | 方法 |
public function requestContext3D(context3DRenderMode:String = "auto", profile:String = "baseline"):void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 11, AIR 3 |
要求建立這個 Stage3D 實體的 Context3D 物件。
在呼叫這個函數之前,請先為 context3DCreate
事件新增事件偵聽程式。如果不要,執行階段就會擲回例外。
關於裝置損失的重要附註:當 GPU 硬體無法提供應用程式使用時,就會發生 GPU 裝置損失。GPU 裝置損失時,就會處理 Context3D 物件。各種原因都會造成 GPU 裝置損失,例如,行動裝置的電力不足或 Windows 裝置進入「鎖定螢幕」狀態。當 GPU 再次可供使用時,執行階段會建立新的 Context3D 實體並傳送另一個 context3DCreate
事件。每當發生裝置損失時,您的應用程式都必須重新載入所有資源並重設顯示內容狀態。
將您的應用程式邏輯設計為可以處理裝置損失及內容重新產生的情形。請不要移除 context3DCreate
事件偵聽程式。不要執行動作來回應不應在應用程式中重複出現的事件。例如,不要加入匿名函數來處理計時器事件,因為裝置損失之後事件會重複。若要測試應用程式如何處理裝置損失,您可以呼叫 Context3D 物件的 dispose()
方法來模擬裝置損失。
下列範例說明如何要求 Context3d 顯示內容:
if( stage.stage3Ds.length > 0 ) { var stage3D:Stage3D = stage.stage3Ds[0]; stage3D.addEventListener( Event.CONTEXT3D_CREATE, myContext3DHandler ); stage3D.requestContext3D( ); } function myContext3DHandler ( event : Event ) : void { var targetStage3D : Stage3D = event.target as Stage3D; InitAll3DResources( targetStage3D.context3D ); StartRendering( targetStage3D.context3D ); }
參數
context3DRenderMode:String (default = "auto ") — 要求的顯示內容類型。預設值為 Context3DRenderMode.AUTO ,執行階段將在可能的情況下建立硬體加速的內容,否則將返回軟體。請使用 Context3DRenderMode.SOFTWARE 要求軟體顯示內容。在行動裝置上無法使用軟體顯示。軟體顯示僅供 Context3DProfile.BASELINE 和 Context3DProfile.BASELINE_CONSTRAINED 使用。
| |
profile:String (default = "baseline ") — (AIR 3.4 及更新版本) 指定 Flash Player 支援較低階 GPU 的程度。預設值為 Context3DProfile.BASELINE ,這會傳回類似先前版本所使用的 Context3D 實體。若要取得所有可用描述檔的詳細資料,請參閱 flash.display3D.Context3DProfile 。
|
事件
context3DCreate: — 在要求的顯示內容成功完成時傳送。
| |
error: — 在無法建立要求的顯示內容時傳送。
|
擲回值
Error — 如果這個 Stage3D 物件一直未加入 context3DCreate 事件的偵聽程式,就會擲回錯誤。
| |
ArgumentError — 如果在上一個呼叫完成之前,使用不同 context3DRenderMode 再次呼叫這個方法,就會擲回錯誤。
|
相關 API 元素
requestContext3DMatchingProfiles | () | 方法 |
public function requestContext3DMatchingProfiles(profiles:Vector.<String>):void
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 12, AIR 4 |
要求建立這個 Stage3D 實體的 Context3D 物件。
在呼叫這個函數之前,請先為 context3DCreate
事件新增事件偵聽程式。如果不要,執行階段就會擲回例外。
關於裝置損失的重要附註:當 GPU 硬體無法提供應用程式使用時,就會發生 GPU 裝置損失。GPU 裝置損失時,就會處理 Context3D 物件。各種原因都會造成 GPU 裝置損失,例如,行動裝置的電力不足或 Windows 裝置進入「鎖定螢幕」狀態。當 GPU 再次可供使用時,執行階段會建立新的 Context3D 實體並傳送另一個 context3DCreate
事件。每當發生裝置損失時,您的應用程式都必須重新載入所有資源並重設顯示內容狀態。
將您的應用程式邏輯設計為可以處理裝置損失及內容重新產生的情形。請不要移除 context3DCreate
事件偵聽程式。不要執行動作來回應不應在應用程式中重複出現的事件。例如,不要加入匿名函數來處理計時器事件,因為裝置損失之後事件會重複。若要測試應用程式如何處理裝置損失,您可以呼叫 Context3D 物件的 dispose()
方法來模擬裝置損失。
下列範例說明如何要求 Context3d 顯示內容:
if( stage.stage3Ds.length > 0 ) { var stage3D:Stage3D = stage.stage3Ds[0]; stage3D.addEventListener( Event.CONTEXT3D_CREATE, myContext3DHandler ); stage3D.requestContext3DMatchingProfiles(Vector.<string>([Context3DProfile.BASELINE, Context3DProfile.BASELINE_EXTENDED])); } function myContext3DHandler ( event : Event ) : void { var targetStage3D : Stage3D = event.target as Stage3D; if(targetStage3D.context3D.profile.localeCompare(Context3DProfile.BASELINE) == 0) { InitAll3DResources( targetStage3D.context3D ); } StartRendering( targetStage3D.context3D );
參數
profiles:Vector.<String> — (AIR 3.4 及更新版本) 開發人員想要在 Flash 程式中使用的描述檔陣列。當開發人員將描述檔陣列傳遞至 Stage3D.requestContext3DMatchingProfiles 時,視其硬體功能而定,將會根據該陣列中的高階描述檔而取得 Context3D。rendermode 已設定為 AUTO,因此會省略參數。
|
事件
context3DCreate: — 在要求的顯示內容成功完成時傳送。
| |
error: — 在無法建立要求的顯示內容時傳送。如果硬體無法使用,將不會建立軟體 context3d。
|
擲回值
Error — 如果這個 Stage3D 物件一直未加入 context3DCreate 事件的偵聽程式,就會擲回錯誤。
| |
ArgumentError — 如果在上一個呼叫完成之前呼叫這個方法,就會擲回錯誤。
| |
ArgumentError — 如果陣列中的項目不是 flash.display3D.Context3DProfile,就會擲回錯誤。
|
相關 API 元素
context3DCreate | 事件 |
flash.events.Event
屬性 Event.type =
flash.events.Event.CONTEXT3D_CREATE
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 11, AIR 3 |
在建立顯示內容時傳送。
Event.CONTEXT3D_CREATE
常數定義了 context3Dcreate
事件物件的 type
屬性值。此事件只會由 Stage3D 物件引發,以回應對 Stage3D.requestContext3D 的呼叫或回應繫結至 Stage3D 物件之 Context3D 的 OS 觸發重設。請檢測 Stage3D.context3D 屬性以取得剛建立的 Context3D 物件。
相關 API 元素
error | 事件 |
flash.events.ErrorEvent
屬性 ErrorEvent.type =
flash.events.ErrorEvent.ERROR
語言版本: | ActionScript 3.0 |
執行階段版本: | Flash Player 11, AIR 3 |
在要求顯示內容失敗時傳送。
定義error
事件物件的 type
屬性值。
這個事件具有下列屬性:
屬性 | 值 |
---|---|
bubbles | false |
cancelable | false ;沒有要取消的預設行為指令。 |
currentTarget | 正主動使用事件偵聽程式處理 Event 物件的物件。 |
target | 遇到網路作業失敗的物件。 |
text | 要顯示為錯誤訊息的文字。 |
相關 API 元素
Tue Jun 12 2018, 03:47 PM Z