以全螢幕模式播放視訊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 類別。 |
|