网页中的FLASH如何全屏显示

kingstou 2009-10-14 10:45:36
必须是在网页中实现。
在网上看到的方法是使用JS打开一个新的全屏窗口,但是这样的话,两个窗口中的FLASH动画播放的进度不同,还有执行某个操作后会进入不同的场景,所以感觉新开窗口的方法不太方便。
有没有其他的方法来实现全屏,并保证全屏或恢复后,FLASH的进度不变。
...全文
989 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yj605528638 2009-11-03
  • 打赏
  • 举报
回复
学习了
xingjunli 2009-10-14
  • 打赏
  • 举报
回复
经过简单测试是可行的,如有需要源码可留下邮箱
xingjunli 2009-10-14
  • 打赏
  • 举报
回复
官方代码:
private function toggleFullScreen(event:MouseEvent):void {
switch(stage.displayState) {
case "normal":
stage.displayState = "fullScreen";
break;
case "fullScreen":
default:
stage.displayState = "normal";
break;
}
}


displayState 属性
displayState:String [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9.0.28.0

用于指定要使用哪个显示状态的 StageDisplayState 类的值。 以下是有效值:

* StageDisplayState.FULL_SCREEN 将 AIR 应用程序或 Flash Player 设置成扩展舞台以覆盖用户的整个屏幕(禁用键盘输入)。
* StageDisplayState.FULL_SCREEN_INTERACTIVE 将 AIR 应用程序设置成扩展舞台以覆盖用户的整个屏幕(允许键盘输入)。(不适用于 Flash Player 中运行的内容。)
* StageDisplayState.NORMAL 将播放器设置回标准的舞台显示模式。

影片在全屏模式下的缩放行为由 scaleMode 设置确定(在 HTML 文件中使用 Stage.scaleMode 属性或 SWF 文件的 embed 标签设置进行设置)。 如果 scaleMode 属性设置为 noScale,同时应用程序过渡到全屏模式,则会更新 Stage 的 width 和 height 属性,并调度 Stage 的 resize 事件。

以下限制适用于在 HTML 页内播放的 SWF 文件(而不是使用独立 Flash Player 播放的文件或不在 AIR 运行时中运行的文件):

* 若要启用全屏模式,请将 allowFullScreen 参数添加到包含 SWF 文件的 HTML 页中的 object 和 embed 标签,同时将 allowFullScreen 设置为 "true",如下例所示:

<param name="allowFullScreen" value="true" />
...
<embed src="example.swf" allowFullScreen="true" ... >

HTML 页还可以使用脚本生成 SWF 嵌入标签。 您需要修改脚本,以使其插入正确的 allowFullScreen 设置。 Flash 和 Flex Builder 生成的 HTML 页使用 AC_FL_RunContent() 函数嵌入对 SWF 文件的引用,并且您需要添加 allowFullScreen 参数设置,如下所示:

AC_FL_RunContent( ... "allowFullScreen", "true", ... )

* 全屏模式是在响应用户单击鼠标或按键时初始化的;在没有用户输入的情况下,影片不能更改 Stage.displayState。在全屏模式下,Flash Player 会限制键盘输入。可接受的键包括用于终止全屏模式的快捷键和非打印键,例如箭头、空格、Shift 键和 Tab 键。用于终止全屏模式的快捷键包括 Esc(Windows、Linux 和 Mac)、Ctrl+W (Windows)、Command+W (Mac) 和 Alt+F4。

当用户进入全屏模式时,将在影片前面显示一个 Flash Player 对话框,告诉用户已经进入了全屏模式,并可以按 Esc 键退出全屏模式。
* 从 Flash Player 9.0.115.0 开始,全屏模式在无窗口模式下的工作方式与窗口模式相同。如果将窗口模式(HTML 中的 wmode)设置为不透明无窗口 (opaque) 或透明无窗口 (transparent),则可以启动全屏模式,但全屏窗口始终是不透明的。

对于在独立 Flash Player 中或在 AIR 中运行的 SWF 内容,不存在这些限制。AIR 支持允许键盘输入的交互式全屏模式。

对于以全屏模式运行的 AIR 内容,在播放视频内容时,将禁用系统屏幕保护程序和节能选项,直到该视频停止或退出全屏幕模式。


实现
public function get displayState():String
public function set displayState(value:String):void

引发
SecurityError — 调用 Stage 对象的 displayState 属性会因任何调用方没有与 Stage 所有者(主 SWF 文件)位于同一安全沙箱而引发异常。 为避免出现这种情况,Stage 的所有者可以通过调用 Security.allowDomain() 方法或 Security.allowInsecureDomain() 方法来向域的调用方授予权限。 有关详细信息,请参阅《ActionScript 3.0 编程》中的“安全性”一章。在已显示设置对话框但用户没有响应时,尝试设置 displayState 属性 (property),或者如果 param 或 embed HTML 标签的 allowFullScreen 属性 (attribute) 没有设置为 true,则引发安全错误。

另请参见
flash.display.StageDisplayState
Stage.scaleMode
flash.events.FullScreenEvent
flash.events.Event.RESIZE

示例
下例以一种交互的方式演示如何通过修改 displayState 属性创造全屏体验。

注意:出于安全方面的限制,只有在某些情况下才能触发全屏,例如,如果用户单击了鼠标或按了键盘键。 在浏览器中运行时,allowFullScreen 属性必须设置为 true。

package {
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.*;
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.media.Video;

public class FullScreenExample extends Sprite
{
private var videoURL:String = "testVideo.flv";
private var connection:NetConnection;
private var stream:NetStream;
private var video:Video;

public function FullScreenExample() {
connection = new NetConnection();
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
connection.connect(null);

loaderInfo.addEventListener(Event.INIT, createMouseListener);
}

private function createMouseListener(event:Event):void {
stage.addEventListener(MouseEvent.CLICK,toggleFullScreen);
}

private function toggleFullScreen(event:MouseEvent):void {
switch(stage.displayState) {
case "normal":
stage.displayState = "fullScreen";
break;
case "fullScreen":
default:
stage.displayState = "normal";
break;
}
}

// Video related:
private function netStatusHandler(event:NetStatusEvent):void {
switch (event.info.code) {
case "NetConnection.Connect.Success":
connectStream();
break;
case "NetStream.Play.StreamNotFound":
trace("Unable to locate video: " + videoURL);
break;
}
}
private function connectStream():void {
var stream:NetStream = new NetStream(connection);
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);

video = new Video(stage.stageWidth,stage.stageHeight);
video.attachNetStream(stream);
stream.play(videoURL);
addChild(video);
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function asyncErrorHandler(event:AsyncErrorEvent):void {
// ignore AsyncErrorEvent events.
}
}
}

xingjunli 2009-10-14
  • 打赏
  • 举报
回复
“ Fullscreen ”是全屏的意思,在默认的情况下, Flash 动画不是以全屏播放( false ),如果需要让动画以全屏状态播放,就必须把 Fullscreen 命令设置为 True ,写为:Fscommand ("Fullscreen","True");根据需要,我们可以把它写到帧、按钮、 MC ( Movie Clip )中。
kingstou 2009-10-14
  • 打赏
  • 举报
回复
土豆网使用的是什么方式的全屏呢?
zhuzhi 2009-10-14
  • 打赏
  • 举报
回复
不打开新窗口的全屏方式很难实现的。你如果觉得保证进度一致比全屏重要的话。可以考虑不要全屏,只是用js代码动态设置swf文件的高度和宽度为页面的100%。这样进度就可以一致,虽然没有全屏,但是有整个页面的宽和高,应该也差不多了。
nick848 2009-10-14
  • 打赏
  • 举报
回复
fscommand("fullscreen","true");
效果:flashplayer播放器将以全屏方式进行影片播放。按键盘上的Esc键可跳转回窗口状态。

2,275

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 Flash流媒体开发
社区管理员
  • Flash流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧