I Love China

技术·人生

技术服务生活
繁體
5月 18th, 2007

[翻译]Flash在网页中实现全屏

[原文地址]点击查看原文
[例子]

Flash Player 9.0.28 是第一个真正支持全屏播放Flash影片的播放器. 但不幸的是这个特色并不被Flash开发工具支持,一直到Flash9才支持, 不过稍微修改下Flash8的安装,你现在就可以使用这一全屏特色.

在查看本文章中的例子之前,请确保你的FlashPlayer版本至少是9.0.28.之前的9,0,16,0和9,0,20,0是不支持这个效果的。你需要把播放器升级到至少9,0,28,0。
技术的关键在于使用Stage对象的新属性:”displayState”,此属性接受两种输入:

1、’fullScreen’: 设置成全屏
2、’normal’:默认设置
在此之前,我们需要修改下Flash8的安装后的文件。打开下面的文件

FileURL Code:
  1. \Documents and Settings\用户名\Local Settings\Application Data\Macromedia\Flash 8\语言\Configuration\Classes\FP8\Stage.as

将它的内容改成如下内容

ActionScript Code:
  1. //****************************************************************************
  2. // ActionScript Standard Library
  3. // Stage object
  4. //****************************************************************************
  5.  
  6. intrinsic class Stage
  7. {
  8.     // for fullscreen
  9.     static var displayState:String;
  10.     // end for fullscreen
  11.     static var align:String;
  12.     static var height:Number;
  13.     static var scaleMode:String;
  14.     static var showMenu:Boolean;
  15.     static var width:Number;
  16.  
  17.     static function addListener(listener:Object):Void;
  18.     static function removeListener(listener:Object):Boolean;
  19. }

其实只是添加了下面一行内容

ActionScript Code:
  1. static var displayState:String;

现在我们就可以在Flash影片中设置displayState属性了。处于安全方面的考虑,只有与用户交互时Flash影片才能设置displayState为全屏模式,也就是说我们不能把影片设置成默认全屏的。 你需要添加一个按钮来接收用户的指令来切换全屏模式。我们从组件面板中拖出一个Button组件来,并在帧上添加如下代码

ActionScript Code:
  1. var clickObj:Object = new Object ();
  2. clickObj.click = function (evtObj:Object)
  3. {
  4.     if (Stage.displayState == "fullScreen")
  5.     {
  6.         evtObj.target.label = "点击全屏";
  7.         Stage.displayState = "normal";
  8.     }
  9.     else
  10.     {
  11.         evtObj.target.label = "退出全屏";
  12.         Stage.displayState = "fullScreen";
  13.     }
  14. };
  15. full_btn.addEventListener("click",clickObj);

如果你想侦听全屏模式已经被设置或者退出了,你可以使用一个新的事件侦听函数,onFullScreen:

ActionScript Code:
  1. EventListener = new Object;
  2. EventListener.onFullScreen = function( bFull:Boolean ){
  3.   // change  to fullscreen mode has been detected
  4.   if(bFull){
  5.     v_mc.vtxt  = "You are in Full Screen Mode";
  6.   }
  7.   else{
  8.     v_mc.vtxt  = "Everything is back to normal";
  9.   }
  10. }
  11. Stage.addListener( EventListener );

不过即使做了上面这些,仍然不能实现全屏。另一个安全限制是需要在EMBED标签内添加一个新的属性:’allowFullScreen’,值为’true’:

html Code:
  1. <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" id="testSWF" width="550" height="400" title="test">
  2.   <param name="movie" value="test.swf" />
  3.  <param name="allowFullScreen" value="true" />
  4.  
  5.   <param name="quality" value="high" />
  6.   <embed src="test.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="550" height="400" allowFullScreen="true"></embed>
  7. </object>

不幸的是SWFObject和UFO都不支持这个属性。

随机文章:

Leave a Reply