全螢幕模式可讓您將影片的舞台設定為符合檢視者的整個螢幕,而不含任何容器邊框或選單。Stage 類別的
displayState
屬性是用來為 SWF 切換開啟及關閉全螢幕模式。
displayState
屬性可以設定為由 flash.display.StageDisplayState 類別中常數所定義的其中一個值。若要開啟全螢幕模式,請將
displayState
屬性設定為
StageDisplayState.FULL_SCREEN
:
stage.displayState = StageDisplayState.FULL_SCREEN;
若要開啟全螢幕互動模式 (Flash Player 11.3 的新功能),請將
displayState
屬性設定為
StageDisplayState.FULL_SCREEN_INTERACTIVE
:
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
在 Flash Player 中,全螢幕模式只能透過 ActionScript 回應按一下滑鼠動作 (包括按一下右鍵) 或按下按鍵,才能進行初始化。對於在應用程式安全執行程序中執行的 AIR 內容,則不會要求必須進入全螢幕模式才能回應使用者手勢。
若要離開全螢幕模式,請將
displayState
屬性設定為
StageDisplayState.NORMAL
。
stage.displayState = StageDisplayState.NORMAL;
此外,使用者可以將焦點切換至不同的視窗,或使用一些按鍵組合的其中一種,選擇離開全螢幕模式,可使用的按鍵組合包括:Esc 鍵 (所有平台)、Ctrl+W (Windows)、Command+W (Mac) 或 Alt+F4 (Windows)。
在 Flash Player 中啟用全螢幕模式
若要為嵌入 HTML 網頁中的 SWF 檔啟用全螢幕模式,嵌入 Flash Player 的 HTML 程式碼必須包括
param
標籤以及名稱為
allowFullScreen
和值為
true
的
embed
特質,如下所示:
<object>
...
<param name="allowFullScreen" value="true" />
<embed ... allowFullScreen="true" />
</object>
在 Flash 編寫工具中選取「檔案 > 發佈設定」,然後在「發佈設定」對話方塊的「HTML」索引標籤上,選取「僅適用於 Flash - 允許全螢幕」範本。
在 Flex 中,確認 HTML 範本包含支援全螢幕的
<object>
和
<embed>
標籤。
若在網頁中使用 JavaScript,以產生 SWF 嵌入標籤,則必須更改 JavaScript,在其中加入
allowFullScreen param
標籤和特質。例如,若您的 HTML 頁面使用
AC_FL_RunContent()
函數 (用於 Flash Professional 和 Flash Builder 所產生的 HTML 檔),應將
allowFullScreen
參數加入該函數,如下所示:
AC_FL_RunContent(
...
'allowFullScreen','true',
...
); //end AC code
這並不適用於在獨立的 Flash Player 中執行的 SWF 檔。
備註:
無論您將「視窗模式」(HTML 中的 wmode) 設定為「不透明無視窗」(opaque) 或「透明無視窗」(transparent),全螢幕視窗一定是不透明的。
在瀏覽器中,Flash Player 若要使用全螢幕模式,也有與安全性相關的限制。這些限制會在
安全性
中說明。
啟用 Flash Player 11.3 及更新版本中的全螢幕互動模式
Flash Player 11.3 及更新版本支援全螢幕互動模式,可對所有鍵盤按鍵提供完整支援 (
Esc
除外,這個按鍵會結束全螢幕互動模式)。全螢幕互動模式適合在進行遊戲時使用 (例如,可以與多人遊戲中的玩家聊天,或者在第一人的射擊遊戲中啟用 WASD 鍵盤控制項)。
若要為內嵌於 HTML 頁面中的 SWF 檔案啟用全螢幕互動模式,要嵌入 Flash Player 的 HTML 程式碼必須包括
param
標籤以及名稱為
allowFullScreenInteractive
和值為
true
的
embed
特質,如下所示:
<object>
...
<param name="allowFullScreenInteractive" value="true" />
<embed ... allowFullScreenInteractive="true" />
</object>
在 Flash 編寫工具中選取「檔案 > 發佈設定」,然後在「發佈設定」對話方塊的「HTML」索引標籤上,選取「僅適用於 Flash - 允許全螢幕」範本。
在 Flash Builder 和 Flex 中,確定 HTML 範本包含支援全螢幕互動模式的
<object>
和
<embed>
標籤。
若要在網頁中使用 JavaScript,以產生 SWF 內嵌標籤,您必須更改 JavaScript,在其中加入
allowFullScreenInteractive param
標籤和特質。例如,若您的 HTML 頁面使用
AC_FL_RunContent()
函數 (用於 Flash Professional 和 Flash Builder 所產生的 HTML 頁面),應將
allowFullScreenInteractive
參數加入該函數呼叫,如下所示:
AC_FL_RunContent(
...
'allowFullScreenInteractive','true',
...
); //end AC code
這並不適用於在獨立的 Flash Player 中執行的 SWF 檔。
全螢幕舞台大小與縮放
Stage.fullScreenHeight
和
Stage.fullScreenWidth
屬性會傳回進入全螢幕大小時 (在立即進入的情況下),顯示器的高度和寬度。當您擷取這些值之後,如果使用者在進入全螢幕模式之前,將瀏覽器從一個顯示器移至其它顯示器,這些值就可能會不正確。如果您從
Stage.displayState
屬性設定為
StageDisplayState.FULL_SCREEN
的事件處理常式中擷取這些值,這些值就是正確的。若使用者有多個顯示器,SWF 內容只會擴展填滿一個顯示器畫面。Flash Player 和 AIR 會量測並判斷包含最大部分 SWF 的顯示器,然後使用該顯示器執行全螢幕模式。fullScreenHeight 和 fullScreenWidth 屬性只會反映用於全螢幕模式的監視器大小。如需詳細資訊,請參閱
適用於 Adobe Flash Platform 的 ActionScript 3.0 參考
中的
Stage.fullScreenHeight
與
Stage.fullScreenWidth
。
全螢幕模式的舞台縮放行為與在一般模式下相同;縮放是由 Stage 類別的
scaleMode
屬性控制。如果將
scaleMode
屬性設定為
StageScaleMode.NO_SCALE
,Stage 的
stageWidth
和
stageHeight
屬性會變更,以反映由 SWF 所佔據之螢幕區域大小 (在此例中為整個螢幕)。如果是在瀏覽器中檢視,則 HTML 參數會控制這項設定。
您可以使用 Stage 類別的
fullScreen
事件,在開啟或關閉全螢幕模式時,進行偵測及回應。例如,您可能要在進入或離開全螢幕模式時,重新定位、加入或從螢幕移除項目,如下列範例所示:
import flash.events.FullScreenEvent;
function fullScreenRedraw(event:FullScreenEvent):void
{
if (event.fullScreen)
{
// Remove input text fields.
// Add a button that closes full-screen mode.
}
else
{
// Re-add input text fields.
// Remove the button that closes full-screen mode.
}
}
mySprite.stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenRedraw);
如這段程式碼所示,
fullScreen
事件的事件物件是 flash.events.FullScreenEvent 類別的實體,其中包含
fullScreen
屬性,指出已啟用全螢幕模式 (
true
) 或未啟用 (
false
)。
全螢幕模式中的鍵盤支援
當 Flash Player 在瀏覽器中執行時,所有與鍵盤相關的 ActionScript (如鍵盤事件和 TextField 實體中的輸入文字),在全螢幕模式下都會遭到停用,例外情況 (啟用的按鍵) 如下:
這些限制「不適用」於在獨立 Flash Player 或 AIR 中執行的 SWF 內容。AIR 支援互動式全螢幕模式,允許鍵盤輸入。
全螢幕模式中的滑鼠支援
根據預設,全螢幕模式中的滑鼠事件運作方式與非全螢幕模式相同。然而,在全螢幕模式中,您可以選擇性地設定
Stage.mouseLock
屬性以啟用滑鼠鎖定。滑鼠鎖定會停用游標並啟用未繫結的滑鼠移動方式。
備註:
您只能在桌面應用程式的全螢幕模式中啟用滑鼠鎖定。若未在應用程式的全螢幕模式設定滑鼠鎖定,或是針對行動裝置上的應用程式設定滑鼠鎖定,都將擲回例外狀況。
出現下列情況時會自動停用滑鼠鎖定,並且再次顯示滑鼠游標:
與滑鼠移動相關聯的事件 (例如
mouseMove
事件) 使用 MouseEvent 類別表示事件物件。當滑鼠鎖定停用時,請使用
MouseEvent.localX
和
MouseEvent.localY
屬性判斷滑鼠的位置。當滑鼠鎖定啟用時,請使用
MouseEvent.movementX
和
MouseEvent.movementY
屬性判斷滑鼠的位置。
movementX
和
movementY
屬性包含自上次事件以來滑鼠位置的變更,而非滑鼠位置的絕對座標。
全螢幕模式中的硬體縮放
在 Flash Player 或 AIR 中,您可以使用 Stage 類別的
fullScreenSourceRect
屬性,將舞台的特定區域設定縮放為全螢幕模式。Flash Player 和 AIR 會使用硬體縮放 (如果可供使用的話),利用使用者電腦上的顯示卡和視訊卡,而且一般來說,透過硬體縮放顯示內容的速度通常會比軟體縮放快。
若要利用硬體縮放,請將整個舞台或舞台的一部分設定為全螢幕模式。下列 ActionScript 3.0 程式碼將整個舞台設定為全螢幕模式:
import flash.geom.*;
{
stage.fullScreenSourceRect = new Rectangle(0,0,320,240);
stage.displayState = StageDisplayState.FULL_SCREEN;
}
當這個屬性設定為有效的矩形,而且
displayState
屬性設定為全螢幕模式時,Flash Player 和 AIR 會縮放指定的區域。ActionScript 中實際的「舞台」大小 (以像素為單位) 不會改變。Flash Player 和 AIR 會強制最小限制,使矩形的大小放得下標準的「按 Esc 離開全螢幕模式」訊息。這個限制通常大約是 260 x 30 像素,但可能因平台和 Flash Player 版本的不同而異。
只有當 Flash Player 或 AIR 不是處於全螢幕模式時,才能設定
fullScreenSourceRect
屬性。若要正確使用這個屬性,請先設定這個屬性,然後再將
displayState
屬性設定為全螢幕模式。
若要啟用縮放,請將
fullScreenSourceRect
屬性設定為矩形物件。
stage.fullScreenSourceRect = new Rectangle(0,0,320,240);
若要停用縮放,請將
fullScreenSourceRect
屬性設定為
null
。
stage.fullScreenSourceRect = null;
若要在 Flash Player 中利用所有硬體加速功能,請透過「Flash Player 設定」對話方塊來啟用這些功能。若要載入此對話方塊,請在瀏覽器中的 Flash Player 內容之中按一下滑鼠右鍵 (Windows) 或 Control+按一下 (Mac)。選取「顯示」索引標籤 (第一個索引標籤),然後按一下「啟用硬體加速」核取方塊。
直接與 GPU 複合視窗模式
Flash Player 10 引進兩種新的視窗模式:直接模式及 GPU 複合模式,您可以透過 Flash 編寫工具中的發佈設定加以啟用。AIR 不支援這些模式。若要利用這些模式的優點,您必須為 Flash Player 啟用硬體加速。
直接模式會以最快、最直接的路徑將圖像送上螢幕,非常適合用來播放視訊。
GPU 複合模式會使用視訊卡上的圖像處理單元來加速複合作業。視訊複合是一項排列多個影像圖層以建立單一視訊影像的程序。使用 GPU 加速複合作業時,可以改善 YUV 轉換、色彩校正、旋轉或縮放以及混合時的效能。YUV 轉換就是從複合類比訊號 (用於傳輸) 轉換成 RGB (紅色、綠色、藍色) 顏色模型 (視訊攝影機和顯示器所使用) 的色彩轉換。使用 GPU 加速複合作業時,可以減少記憶體的使用量和 CPU 的運算需求。此外,也可以讓具有標準定義的視訊在播放時更為順暢。
實作這些視窗模式時,請務必謹慎。使用 GPU 複合時,也可能會耗用許多記憶體和 CPU 資源。如果 GPU 無法處理某些作業 (例如混合模式、濾鏡、裁剪或遮色),就必須靠軟體來完成。使用這些模式時,Adobe 建議您每一個 HTML 網頁只播放一個 SWF 檔,並且不要為橫幅啟用這些模式。Flash 的「測試影片」功能不會使用硬體加速,但是您可以透過「發佈預覽」選項來使用。
在 SWF 檔中設定 60 (最高螢幕重新整理速率) 以上的影格速率並沒有用。將影格速率設定為介於 50 和 55 之間的值可以容許丟棄影格的情形,這種情形有時會因為各種原因而發生。
若要使用直接模式,電腦必須配備 Microsoft DirectX 9 和 VRAM 128 MB (Windows) 以及 OpenGL (Apple Macintosh、Mac OS X v10.2 或更新版本)。若要使用 GPU 複合模式,電腦必須具備 Microsoft DirectX 9 和 Pixel Shader 2.0 支援 (Windows) 以及 VRAM 128 MB。對於 Mac OS X 和 Linux 而言,若要使用 GPU 複合模式,則必須具備 OpenGL 1.5 和數個 OpenGL 擴充功能 (framebuffer 物件、多重紋理、著色器物件、陰影語言、片段著色器)。
您可以透過「Flash 發佈設定」對話方塊,利用「Flash」索引標籤上的「硬體加速」選單,為每個 SWF 檔啟動
direct
和
gpu
加速模式。如果您選擇「無」,則如「HTML」索引標籤上的「視窗模式」設定所指定,視窗模式會回復至
default
、
transparent
或
opaque
。