Flex 4フルスクリーンフォーカスHalo INavigatontエラーcreationPolicy="none"


1.Flex 4のフルスクリーン:
  • ページにcreationComprateイベント処理を追加します.creationComplettee=「init()」.
  •  
    [Bindable]
    private var fullScreenBtnLabel:String = "  ";
    
    private function init():void{
    	stage.addEventListener(FullScreenEvent.FULL_SCREEN,function(event:FullScreenEvent):void {
    		fullScreenBtnLabel = event.fullScreen ? "  " : "  ";
    	});
    }
     
  • ページにbuttonを追加します.
  •  
    <mx:LinkButton label="{fullScreenBtnLabel}"  click="changeScreen(event)" textDecoration="underline"/>
     
  • buttonクリックイベント処理:
  •  
    private function changeScreen(event:MouseEvent):void{
    	stage.displayState = stage.displayState == StageDisplayState.FULL_SCREEN ? StageDisplayState.NORMAL : StageDisplayState.FULL_SCREEN;
    }
     
    完成しました.これで全画面と普通の画面が切り替わります.
     
    注意:(1)flex 3でmx.co ree.Appplication.appplication.stage.displayState=Stage DisplayStare.FULL_SCREEN;を選択します.
    (2)フルスクリーンの場合、キーボードは使えません.
     
     
    2.デフォルトでは、Flexで生成されたパッケージを使用してswfファイルにアクセスする場合でも、ページのcreationCompletteイベントでfocus Manager.setFocuを使用して、ある入力ボックスにフォーカスを合わせることができますが、swf全体がフォーカスを取得していないため、ページのロードが完了したときに直接入力することはできません.解決方法:工程カタログ下のhttml-template\index.templatedを修正して、ラベルにonloadイベントを追加します.
    <script type="text/javascript">
    function doload() {
        try {
    	document.getElementById('${application}').focus();
    	document.getElementById('${application}').select();
        } catch (ex) {
        }
    }
    </script>
    
    <!--  ---------- html ----------- -->
    
    <body onload="doload()">
     
    3.View Stockで「Haloナビゲーションのサブ世代はINavigatonitentを実現しなければなりません.」エラーが発生しました.
    解決方法:ネストワンフロア
     
    4.View StockでcreationPolicy=「none」の場合、手動でコンポーネントを作成します.
      manView Stock.create ComponentFrom Descriptor;  メインビューStock.validateNow()
     
    コードは以下の通りです
    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    			   xmlns:s="library://ns.adobe.com/flex/spark" 
    			   xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init();">
    	<s:layout>
    		<s:VerticalLayout/>
    	</s:layout>
    
    	<fx:Script>
    		<![CDATA[
    			import mx.core.INavigatorContent;
    			import mx.core.UIComponent;
    			private function init():void {
    				selectChildViewByIndex(panel1,0);
    			}
    			//  ViewStack   View   
    			private function selectChildViewByIndex(view:UIComponent,index:int):void {
    				if(view == null){
    					mainViewStack.createComponentFromDescriptor(mainViewStack.childDescriptors[index],false);
    					mainViewStack.validateNow();
    				}
    				mainViewStack.selectedIndex = index;
    			}
    			
    		]]>
    	</fx:Script>
    	
    	<mx:ViewStack id="mainViewStack" creationPolicy="none">
    		<s:NavigatorContent>
    			<s:Panel id="panel1" title="panel1"/>
    		</s:NavigatorContent>
    		<s:NavigatorContent>
    			<s:Panel id="panel2" title="panel2"/>
    		</s:NavigatorContent>
    		<s:NavigatorContent>
    			<s:Panel id="panel3" title="panel3"/>
    		</s:NavigatorContent>
    	</mx:ViewStack>
    	
    	<s:HGroup>
    		<s:Button label="show panel1" click="selectChildViewByIndex(panel1,0)"/>
    		<s:Button label="show panel2" click="selectChildViewByIndex(panel2,1)"/>
    		<s:Button label="show panel3" click="selectChildViewByIndex(panel3,2)"/>
    	</s:HGroup>
    	
    </s:Application>