Flex全屏原理和局部全屏方法
本文和大家重點討論一下Flex全屏的原理和局部Flex全屏的幾種方法,F(xiàn)lex全屏和flash全屏其實是相似的,都是由as控制的,當選擇以Flex全屏顯示的時候,會自動更改swf的高和寬,以Flex全屏幕顯示整個swf。
Flex全屏
1.Flex全屏的原理:
Flex全屏和flash全屏其實是相似的,都是由as控制的,當選擇以Flex全屏顯示的時候,會自動更改swf的高和寬,以Flex全屏幕顯示整個swf。
2.局部Flex全屏的兩種方法:
一、使用在flash.display包中有一個stage對象,它有一個屬性是fullScreenSourceRect:Rectangle,設(shè)置FlashPlayer以將特定的舞臺區(qū)域放大到Flex全屏模式。
二、Flex全屏?xí)r調(diào)整某組件的高度和寬度,鋪滿整個屏幕,當退出Flex全屏?xí)r,要還原組件的高度和寬度。
3.Flex全屏的代碼實現(xiàn):
第一種方法:
- //valid,willenablehardwarescaling
- stage.fullScreenSourceRect=newRectangle(0,0,320,240);——詳細代碼可以查看Flex幫助
第二種方法:(注意:在Application中添加的初始化函數(shù),使用的是applicationComplete事件)
- <?xmlversionxmlversion="1.0"encoding="utf-8"?>
- <!--http://blog.Flexexamples.com/2007/08/07/creating-full-screen-Flex-applications/-->
- <mx:Applicationxmlns:mxmx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"layout="vertical"
- applicationComplete="init(event)"viewSourceURL="srcview/index.html">
- <mx:Script>
- <![CDATA[
- importflash.display.StageDisplayState;
- privatefunctioninit(evt:Event):void{
- /*Setupfullscreenhandler.*/
- Application.application.stage.addEventListener(FullScreenEvent.FULL_SCREEN,fullScreenHandler);
- dispState=Application.application.stage.displayState;
- }
- privatefunctionfullScreenHandler(evt:FullScreenEvent):void{
- dispState=Application.application.stage.displayState+"(fullScreen="+evt.fullScreen.toString()+")";
- if(evt.fullScreen){
- /*Dosomethingspecifichereifweswitchedtofullscreenmode.*/
- }else{
- /*Dosomethingspecifichereifweswitchedtonormalmode.*/
- }
- }
- privatefunctiontoggleFullScreen():void{
- try{
- switch(Application.application.stage.displayState){
- caseStageDisplayState.FULL_SCREEN:
- /*Ifalreadyinfullscreenmode,switchtonormalmode.*/
- Application.application.stage.displayState=StageDisplayState.NORMAL;
- break;
- default:
- /*Ifnotinfullscreenmode,switchtofullscreenmode.*/
- Application.application.stage.displayState=StageDisplayState.FULL_SCREEN;
- break;
- }
- }catch(err:SecurityError){
- //ignore
- }
- }
- ]]>
- </mx:Script>
- <mx:Stringidmx:Stringid="dispState"/>
- <mx:Labeltextmx:Labeltext="width={Application.application.width}"/>
- <mx:Labeltextmx:Labeltext="height={Application.application.height}"/>
- <mx:Labeltextmx:Labeltext="displayState={dispState}"/>
- <mx:Buttonlabelmx:Buttonlabel="Togglefullscreen"click="toggleFullScreen()"/>
- </mx:Application>
--------------------------------------------------并修改index.template.html:-------------------------------------------
- AC_FL_RunContent(
- "src","main",
- "width","100%",
- "height","100%",
- "align","middle",
- "id","main",
- "quality","high",
- "bgcolor","#869ca7",
- "name","main",
- "allowScriptAccess","sameDomain",
- "type","application/x-shockwave-flash",
- "pluginspage","http://www.adobe.com/go/getflashplayer",
- "allowFullScreen","true"
- );
注意:
1、Application.application.stage.displayState=StageDisplayState.FULL_SCREEN;
//必須把它放到按鈕或鍵盤事件中,否則在AS2.0里會被忽略,AS3.0里會拋出以下異常SecurityError:Error#2152:不允許使用Flex全屏模式。atflash.display::Stage/setdisplayState()
2、Flex全屏下Flash文本框無法輸入,設(shè)計界面請勿支持Flex全屏,而且Flex全屏下做不到屏蔽右鍵的功能
【編輯推薦】
- Flex全屏實現(xiàn)方法揭秘
- 解析Flex全屏模式設(shè)置方法
- Flex及FlexBuilder2.0開發(fā)環(huán)境詳解
- FlexBuilder3.0與Eclipse3.4的完美結(jié)合
- Flex內(nèi)存泄露解決方法和內(nèi)存釋放優(yōu)化原則