不少视频网站flash播放器右键菜单里有一项“全屏”,点击之flash全屏显示,出现提示“按Esc键取消”,这效果一直让我觉得好神秘~今天终于揭开了神秘面纱:
Flash播放器全屏模式的实现方法
这里不说用JS改变document内容实现的全屏方法,而是FLASH 9以后一种新的实现方法.
首先HTML的
<object><embed>标记要添加一个allowfullscreen,值为true.
也就是加上<param name="allowFullScreen" value="true" />
AS2里是没有这个代码的,所以我们要手动添加.
打开你的Flash 8/(zh_cn)/First Run/Classes/FP8/Stage.as
在那一排申明的变量里加上下一句
static var displayState:String;
那么你的flash里,就可以使用
Stage["displayState"] = "fullScreen";
或者
Stage.displayState = "fullScreen";
来启动全屏了.
退出全屏
Stage.displayState = "Normal";
对全屏有影响的除了开始提到的allowfullscreen,还有scaleMode,默认设置是showAll,这以为全屏伸延了整个窗口后,比例保持不变.如果你需要控制尺寸,这个值就应该是noScale
差不多就这样了,实现全屏,只用你把按钮的功能做成改变 Stage的displayState是fullscreen或者Normal.当然,客户端的flash版本必须是9以上.
也可以和JS实现的全屏一起使用,让JS对应FLASH8以前的版本,此方法用于FLASH9以后的版本
——摘自东杰书屋
我用flash9 as2做了一个
首先我们需要设置舞台缩放模式为不缩放,以便全屏后不自动拉伸
Stage.scaleMode = "noscale";
我们可以做一个开关来控制舞台的全屏
function fullS() {
switch (Stage.displayState) {
case "fullScreen" :
Stage.displayState = "normal";
break;
case "normal" :
default :
Stage.displayState = "fullScreen";
break;
}
}
然后将菜单项加上“全屏”,参见FLASH自定义右键菜单
var expandmenu = new ContextMenu();
expandmenu.hideBuiltInItems();
//new ContextMenuItem(caption, callbackFunction, [ separatorBefore, [ enabled, [ visible ] ] ] )
var btn1 = new ContextMenuItem("进入全屏", fullS);
expandmenu.customItems.push(btn1);
_root.menu = expandmenu;
全屏后右键菜单不能还是显示“进入全屏”吧?咱们再加个监听
StageLS = new Object();
StageLS.onResize = function() {
switch (Stage.displayState) {
case "fullScreen" :
btn1.caption = "退出全屏";
break;
case "normal" :
default :
btn1.caption = "进入全屏";
break;
}
};
Stage.addListener(StageLS);
这样就OK啦,发布
源文件下载:点击下载此文件
ps:如果客户端flash播放器的版本在9以前的话是无法正常全屏的
现在正在郁闷:flex3里面没有flash.display.StageDisplayState这个包包,不知道怎么做全屏….