代码之家  ›  专栏  ›  技术社区  ›  itarato Randy Sugianto 'Yuku'

自定义组件中的Flex4应用程序状态

  •  0
  • itarato Randy Sugianto 'Yuku'  · 技术社区  · 16 年前

    <mx:State name="only_view_mode">
        <mx:RemoveChild target="{myComponent.button1}" />
    </mx:State>
    

    在Flex4中应该是 差不多吧

    <mx:State name="only_view_mode" />
    

    <mx:LinkButton id="button1" excludeFrom="???" />
    

    我的问题是:如何从组件访问应用程序状态?我查了官方的证明( http://www.adobe.com/go/learn_flex4_alldocumentation_en

    提前谢谢

    2 回复  |  直到 10 年前
        2
  •  0
  •   itarato Randy Sugianto 'Yuku'    16 年前

    因为它需要一个字符串,所以没有真正起作用。我尽我所能地试过了。到目前为止,我得到了一个非常糟糕的解决方案:我添加了一个事件监听器,用于我的主级别组件的checkint状态更改:

    <?xml version="1.0" encoding="utf-8"?>
    <s:Panel 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="{onCreationComplete();}">
        <fx:Script>
            <![CDATA[
                import mx.core.FlexGlobals;
                import mx.events.StateChangeEvent;
                private function onCreationComplete():void {
                    FlexGlobals.topLevelApplication.addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE, onStateChanged);
                }
    
                private function onStateChanged(event:StateChangeEvent):void {
                    currentState = event.newState;
                }
            ]]>
        </fx:Script>
        <s:states>
            <s:State name="default" />
            <s:State name="login" />
        </s:states>
        <s:TextArea includeIn="login"/>
    </s:Panel>
    

    如果有更好的解决办法,请告诉我。顺便说一句,我预感State组件的basedOn属性是一个不错的选择。但不知道它需要什么样的格式:

        <s:State name="login" basedOn="???" />