首页前端开发HTMLflex 多 State(场景)下组件不能访问的解决方案

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

时间2024-01-25 10:52:37发布访客分类HTML浏览662
导读:收集整理的这篇文章主要介绍了html5教程-flex 多 State(场景 下组件不能访问的解决方案,觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。...
收集整理的这篇文章主要介绍了html5教程-flex 多 State(场景)下组件不能访问的解决方案,觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 原因分析:

 

Flex 创建多个 State (场景)后 默认只会检查主state(场景)下的组件 对于在其他 State 下创建的组件在没有跳转到

 

该State(场景)之前是不可用的 

 

 

[htML]  

?XMl version="1.0" encoding="utf-8"?>  

s:Application xmlns:fx="https://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="https://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>  

 

原因分析:

 

Flex 创建多个 State (场景)后 默认只会检查主State(场景)下的组件 对于在其他 State 下创建的组件在没有跳转到

 

该State(场景)之前是不可用的 

 

 

[html]  

?xml version="1.0" encoding="utf-8"?>  

s:Application xmlns:fx="https://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="https://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>  

 

觉得可用,就经常来吧! 欢迎评论哦! html5教程,巧夺天工,精雕玉琢。小宝典献丑了!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

divflexHTMLImportletpost-format-galleryStatethis

若转载请注明出处: flex 多 State(场景)下组件不能访问的解决方案
本文地址: https://pptw.com/jishu/586435.html
菜鸟做HTML5小游戏 - 翻翻乐 HTML5 移动开发 -- Canvas 9.4 表格 , 折线图

游客 回复需填写必要信息