在全屏模式下播放视频

Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本

Flash Player 和 AIR 使您可以创建全屏应用程序来播放您的视频,并支持将视频放大至全屏。

对于桌面上以全屏模式运行的 AIR 内容,在播放过程中将禁用系统屏幕保护程序和节能选项,直至视频输入停止或用户退出全屏模式。

有关使用全屏模式的完整详细信息,请参阅 使用全屏模式

在浏览器中为 Flash Player 启用全屏模式

应先通过应用程序的“发布”模板启用全屏模式,然后才能在浏览器中实现 Flash Player 的全屏模式。允许全屏的模板包含 <object> <embed> 标签,这些标签包含 allowFullScreen 参数。下面的示例显示了 <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() 函数是满足要求以提供该函数的存根。有关详细信息,请参阅 编写元数据和提示点的回调方法

退出全屏模式

用户通过输入某个快捷键(如 Esc 键)即可退出全屏模式。可以用 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 将使用硬件加速。运行时使用计算机上的视频适配器加速将视频或舞台的某个局部放大为全屏大小。在这些情况下,Flash Player 应用程序经常可以通过从 Video 类(或 Camera 类 - 对于 Flash Player 11.4/AIR 3.4 和更高版本而言)切换到 StageVideo 类而获益。

有关全屏模式下硬件加速的详细信息,请参阅 使用全屏模式 。有关 StageVideo 的详细信息,请参阅 使用 StageVideo 类来实现硬件加速呈现