以全螢幕模式播放視訊

Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本

Flash Player 和 AIR 可以讓您為視訊播放建立全螢幕應用程式,並支援將視訊放大為全螢幕。

對於在桌上型電腦全螢幕模式下執行的 AIR 內容,系統的螢幕保護程式和省電選項會在播放期間停用,直到視訊輸入停止或使用者結束全螢幕模式為止。

如需有關使用全螢幕模式的完整詳細資訊,請參閱使用全螢幕模式

為瀏覽器中的 Flash Player 啟用全螢幕模式

您必須先透過「發佈」範本,為應用程式啟用全螢幕模式,瀏覽器中的 Flash Player 才能使用全螢幕模式。允許全螢幕的範本包括內含 allowFullScreen 參數的 <object><embed> 標籤。下列範例會顯示 <embed> 標籤中的 allowFullScreen 參數。

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
    id="fullScreen" width="100%" height="100%" 
    codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> 
    ... 
    <param name="allowFullScreen" value="true" /> 
    <embed src="fullScreen.swf" allowFullScreen="true" quality="high" bgcolor="#869ca7" 
        width="100%" height="100%" name="fullScreen" align="middle" 
        play="true" 
        loop="false" 
        quality="high" 
        allowScriptAccess="sameDomain" 
        type="application/x-shockwave-flash" 
        pluginspage="http://www.adobe.com/go/getflashplayer"> 
    </embed> 
    ... 
</object>

在 Flash 中選取「檔案 > 發佈設定」,然後在「發佈設定」對話方塊的「HTML」索引標籤上,選取「僅限 Flash - 允許全螢幕」範本。

在 Flex 中,確認 HTML 範本包含支援全螢幕的 <object><embed> 標籤。

起始全螢幕模式

對於在瀏覽器中執行的 Flash Player 內容,按下滑鼠或按鍵都可以為視訊啟動全螢幕模式。例如,您可以在使用者按一下標示為「全螢幕」的按鈕時,或者從快顯選單選取「全螢幕」命令時,起始全螢幕模式。若要回應使用者,請將事件偵聽程式加入至發生動作的對象物件。在下列程式碼中,會將事件偵聽程式加入至按鈕,使用者按一下按鈕即可進入全螢幕模式:

var fullScreenButton:Button = new Button(); 
fullScreenButton.label = "Full Screen"; 
addChild(fullScreenButton); 
fullScreenButton.addEventListener(MouseEvent.CLICK, fullScreenButtonHandler); 
 
function fullScreenButtonHandler(event:MouseEvent) 
{ 
    stage.displayState = StageDisplayState.FULL_SCREEN;     
 
}

程式碼會將 Stage.displayState 屬性設定為 StageDisplayState.FULL_SCREEN,以啟動全螢幕模式。其中程式碼會將整個舞台放大為全螢幕,並且調整視訊的縮放比例,使其佔據整個舞台。

fullScreenSourceRect 屬性可讓您指定要放大為全螢幕的特定舞台區域。首先,請定義您要放大為全螢幕的矩形區域。然後,再將它指定給 Stage.fullScreenSourceRect 屬性。fullScreenButtonHandler() 功能的這個版本隨即會加入額外兩行程式碼,這兩行程式碼只會將視訊放大為全螢幕。

private function fullScreenButtonHandler(event:MouseEvent) 
{ 
    var screenRectangle:Rectangle = new Rectangle(video.x, video.y, video.width, video.height); 
    stage.fullScreenSourceRect = screenRectangle; 
    stage.displayState = StageDisplayState.FULL_SCREEN; 
}

雖然這個範例會叫用事件處理常式以回應按滑鼠的動作,但 Flash Player 和 AIR 進入全螢幕的技巧是相同的。首先,定義您要縮放的矩形區域,然後設定 Stage.displayState 屬性。如需詳細資訊,請參閱適用於 Adobe Flash Platform 的 ActionScript 3.0 參考

以下為完整的範例,當中加入了為視訊建立連線和 NetStream 物件並開始播放視訊的程式碼。

package 
{ 
    import flash.net.NetConnection; 
    import flash.net.NetStream; 
    import flash.media.Video; 
    import flash.display.StageDisplayState; 
    import fl.controls.Button; 
    import flash.display.Sprite; 
    import flash.events.MouseEvent; 
    import flash.events.FullScreenEvent; 
    import flash.geom.Rectangle; 
     
    public class FullScreenVideoExample extends Sprite 
    {     
        var fullScreenButton:Button = new Button(); 
        var video:Video = new Video(); 
 
        public function FullScreenVideoExample() 
        { 
            var videoConnection:NetConnection = new NetConnection(); 
            videoConnection.connect(null); 
             
            var videoStream:NetStream = new NetStream(videoConnection); 
            videoStream.client = this; 
 
            addChild(video); 
             
            video.attachNetStream(videoStream); 
             
            videoStream.play("http://www.helpexamples.com/flash/video/water.flv"); 
             
            fullScreenButton.x = 100; 
            fullScreenButton.y = 270; 
            fullScreenButton.label = "Full Screen"; 
            addChild(fullScreenButton); 
            fullScreenButton.addEventListener(MouseEvent.CLICK, fullScreenButtonHandler); 
        } 
 
        private function fullScreenButtonHandler(event:MouseEvent) 
        {  
            var screenRectangle:Rectangle = new Rectangle(video.x, video.y, video.width, video.height); 
            stage.fullScreenSourceRect = screenRectangle; 
            stage.displayState = StageDisplayState.FULL_SCREEN;  
        }     
         
        public function onMetaData(infoObject:Object):void 
        { 
            // stub for callback function 
        } 
    } 
}

onMetaData() 是用於處理視訊中繼資料 (如果有的話) 的回呼函數。所謂回呼函數,就是執行階段為了回應某些發生的事件所呼叫的函數。在上述範例中,onMetaData()函數為虛設常式,可以滿足提供函數時所需的必要條件。如需詳細資訊,請參閱為中繼資料和提示點撰寫回呼方法

離開全螢幕模式

使用者輸入一個鍵盤快速鍵 (如 Escape 鍵),就可以離開全螢幕模式。您可以在 ActionScript 中將 Stage.displayState 屬性設定為 StageDisplayState.NORMAL,以結束全螢幕模式。下列範例中的程式碼會在 NetStream.Play.Stop netStatus 事件發生時,結束全螢幕模式。

videoStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
 
private function netStatusHandler(event:NetStatusEvent) 
{ 
    if(event.info.code == "NetStream.Play.Stop") 
        stage.displayState = StageDisplayState.NORMAL; 
}

全螢幕硬體加速

當您將舞台的矩形區域放大為全螢幕時,Flash Player 或 AIR 會使用硬體加速 (視可用情形和是否已啟用而定)。執行階段會使用電腦中的視訊卡,加快將視訊或部分舞台放大為全螢幕大小的速度。在這些情況下,從 Video 類別切換成 StageVideo,通常對 Flash Player 應用程式效能有利。

如需有關在全螢幕模式中進行硬體加速的詳細資訊,請參閱使用全螢幕模式。如需有關 StageVideo 的詳細資訊,請參閱針對硬體加速顯示使用 StageVideo 類別