使用全屏模式可以将影片的舞台设置为填充查看者的整个显示器,而不包含任何边框或菜单。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 代码中加入含有名称
allowFullScreen
和值
true
的
param
标签和
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 代码中加入含有名称
allowFullScreenInteractive
和值
true
的
param
标签和
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
,则舞台的
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 类的实例,它包含指示是启用 (
true
) 还是禁用 (
false
) 全屏模式的
fullScreen
属性。
全屏模式下的键盘支持
当 Flash Player 在浏览器中运行时,全屏模式下将禁用所有与键盘相关的 ActionScript,如 TextField 实例中的键盘事件和文本输入。但有一些例外(启用的键):
对于在独立 Flash Player 或 AIR 中运行的 SWF 内容,不存在这些限制。AIR 支持允许键盘输入的交互式全屏模式。
全屏模式下的鼠标支持
默认情况下,全屏模式下的鼠标事件的工作方式与未处于全屏模式时相同。但是,在全屏模式下,您可以选择设置
Stage.mouseLock
属性,以启用鼠标锁定。鼠标锁定将禁用光标,且启用没有限制的鼠标移动。
注:
您只能在桌面应用程序的全屏模式下启用鼠标锁定。如果在未处于全屏模式的应用程序上或为移动设备上的应用程序设置鼠标锁定,则会引发异常。
在下列情况下鼠标锁定被自动禁用,鼠标光标再次显示:
与鼠标移动相关的事件,例如
mouseMove
事件,使用 MouseEvent 类表示事件对象。禁用鼠标锁定时,使用
MouseEvent.localX
和
MouseEvent.localY
属性确定鼠标的位置。启用鼠标锁定时,使用
MouseEvent.movementX
和
MouseEvent.movementY
属性确定鼠标的位置。
movementX
和
movementY
属性包含自上一个事件以来的鼠标位置的变化,而不是鼠标位置的绝对坐标。
全屏模式下的硬件缩放
使用 Stage 类的
fullScreenSourceRect
属性可以设置 Flash Player 或 AIR 以将舞台的特定区域放大为全屏幕模式。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 之间将允许放弃的帧,这种情况经常由于各种原因而发生。
使用直接模式对于 Windows 需要 Microsoft DirectX 9 以及 128 MB VRAM,对于 Apple Macintosh Mac OS X 10.2 版或更高版本需要 OpenGL。GPU 合成模式需要在具有 128 MB VRAM 的 Windows 上支持 Microsoft DirectX 9 和 Pixel Shader 2.0。在 Mac OS X 和 Linux 上,GPU 合成模式需要 OpenGL 1.5 以及多种 OpenGL 扩展(帧缓冲区对象、多纹理、着色器对象、着色语言和片段着色器)。
可通过 Flash“发布设置”对话框,使用“Flash”选项卡上的“硬件加速”菜单,为每个 SWF 单独激活
direct
和
gpu
加速模式。如果选择“无”,则窗口模式将按照“HTML”选项卡上“窗口模式”设置所指定的项,转换为
default
、
transparent
或
opaque
。