当前位置:编程学习 > html/css >>

flex 多 State(场景)下组件不能访问的解决方案

原因分析:
 
Flex 创建多个 State (场景)后 默认只会检查主State(场景)下的组件 对于在其他 State 下创建的组件在没有跳转到
 
该State(场景)之前是不可用的 
 
 
[html]  
<?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" minWidth="955" minHeight="600" creationComplete="init()">  
      
    <fx:Script>  
        <![CDATA[ 
 
 
        function init():void{ 
            //无法访问存在于场景"State2"中的组件 
            myText.text="NotFound"; 
        }    
 
 
            protected function btn_clickHandler(event:MouseEvent):void 
            { 
                // TODO Auto-generated method stub 
            } 
 
        ]]>  
    </fx:Script>  
    <s:layout>  
        <s:BasicLayout/>  
    </s:layout>  
    <s:states>  
        <s:State name="State1"/>  
        <s:State name="State2"/>  
    </s:states>  
    <fx:Declarations>  
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->  
    </fx:Declarations>  
    <s:Button x="135" y="228" label="按钮" id="btn" click.State2="btn_clickHandler(event)"/>  
      
    <!-- myText 是存在于 State2 中-->  
    <s:TextInput includeIn="State2" x="134" y="175" id="myText"/>  
  
</s:Application>  
 
 
解决方案:
 
[html]  
<?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" minWidth="955" minHeight="600" creationComplete="init()">  
      
    <fx:Script>  
        <![CDATA[ 
 
        import mx.events.*; 
             
        function init():void{ 
            //在主场景中加入场景变化易做图 
            this.addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE,stateChange); 
        } 
             
            function stateChange(event:StateChangeEvent):void{ 
                //当场景(State)跳转到"State2"时 操作组件 
                if(event.newState=="State2"){ 
                    myText.text="OK"; 
                } 
            }    
 
 
            protected function btn_clickHandler(event:MouseEvent):void 
            { 
                currentState="State2"; 
            } 
 
        ]]>  
    </fx:Script>  
    <s:layout>  
        <s:BasicLayout/>  
    </s:layout>  
    <s:states>  
        <s:State name="State1"/>  
        <s:State name="State2"/>  
    </s:states>  
    <fx:Declarations>  
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->  
    </fx:Declarations>  
    <s:Button x="135" y="228" label="按钮" id="btn" click="btn_clickHandler(event)"/>  
      
    <!-- myText 是存在于 State2 中-->  
    <s:TextInput includeIn="State2" x="134" y="175" id="myText"/>  
  
</s:Application>  
 
补充:web前端 , HTML 5 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,