这段时间在做flash开发,遇到全屏播放的问题。找遍了国内大小网站都没找到相应解决方法,最后只好求助于google(en),在一个名为Julian Pscheid的外国友人的blog上找到这篇文章,故翻译过来为国人享用。

Julian Pscheid

http://julian.empiregn.com/2007/2/22/How-to-create-true-fullscreen-movies-with-Flash

【译文如下】Tom.Y

Flash Player的 9.0.28版本是第一个支持真正意义全屏播放的flash player版本,不幸的是这完美的特性在Flash 9出来之前都没有得到完全的支持,不过只需要细微的修改,您就可以在Flash 8上使用这个特性了。下面简单的指南将帮助您用Flash8实现正真的全屏。

在开始之前,请确定您正在使用的flash player是最新的9.0.28版,先前版本的Flash Player 9 (9,0,16,0 &9,0,20,0)还不支持这一特性。你需要升级至9.0.28.0, 他也是第一个可以在Vista上运行的版本。

这一性特性的关键之处在于使用到ActionScript中Satge对象的一个新属性'displayState',这一属性有两个值:

'fullScreen': 设置舞台全屏播放。

'normal': 默认值。

在您开始使用该属性之前,您还需要在您的Flash 8的安装文件中做一些修改,在你的安装环境下找到下列文件

Flash 8\en\First Run\Classes\FP8\Stage.as

打开文件,把这条语句加进去:static var displayState:String;如下所示:

intrinsic class Stage
{
static var displayState:String;
static var align:String;
static var height:Number;
static var scaleMode:String;
static var showMenu:Boolean;
static var width:Number;
 
static function addListener(listener:Object):Void;
static function removeListener(listener:Object):Boolean;
}

现在你可以在flash中设置displayState这个属性的值了。出于安全考虑,flash之允许displayState这个属性在与用户交互的过程中被设置,意思就是:你不能让影片一全屏模式打开。你需要添加一个按钮或其他元件来捕获用户的操作以便把影片切换至全屏状态。在我的例子里,我就简单的创建了一个按钮。

toggle_btn.onRelease = function(){
  if(Stage.displayState  == "fullScreen"){
    Stage.displayState  = "normal";
  }
  else{
    Stage.displayState  = "fullScreen"
  }
}

If you want to detect that fullscreen mode has been entered or exited, you can use a new event listener function, onFullScreen:

如果你想要获取全屏模式是否被激活或者退出,你可以使用一个新的事件监听程序,onFullScreen:

EventListener = new Object;
EventListener.onFullScreen = function( bFull:Boolean ){
  // change  to fullscreen mode has been detected
  if(bFull){
    v_mc.vtxt  = "You are in Full Screen Mode";
  }
  else{
    v_mc.vtxt  = "Everything is back to normal";
  }
}
Stage.addListener( EventListener );

最后还有一个需要注意的地方,另一个安全的限制需要在EMBED标签中添加一个型的属性“allowFullScreen”,你要设置他为true:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
width="320" height="240" id="fullscreen_flash" align="middle">
  <param name="movie" value="fullscreen_flash.swf" />
  <param name="quality" value="high" />
  <param name="allowFullScreen" value="true" />
  <param name="bgcolor" value="#ffffff" />
  <embed src="fullscreen_flash.swf" allowfullscreen="true" quality="high"
  bgcolor="#ffffff" width="320" height="240" name="fullscreen_flash" align="middle"
  type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
Update: UFO does support the new attribute in version 3.21. Be sure to use the set the lowercase variable allowfullscreen:"true". SWFObject also supports it via so.addParam("allowFullScreen", "true").