2010-06-17 76 views
0

我将我的Flex3应用程序移植到Flex4(FlashBuilder4)。除了一件事,我得到了全新的国家概念。在一个自定义组件(单独的mxml文件)中,我使用主级应用程序的状态。 在Flex3是:Flex4在自定义组件中的应用程序状态

<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)和谷歌当然没有任何成功。

在此先感谢

回答

0

这并没有真正的工作,因为它需要一个字符串。我尽我所能地尝试了所有可能的方式。到目前为止,我带着这个非常丑陋的解决方案:我添加的事件侦听器我的主级组件的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> 

请让我知道是否有更好的解决方案。顺便说一句,我有一个预感,国家组件的basedOn属性是要走的路。但不知道它期望什么样的格式:

<s:State name="login" basedOn="???" /> 
相关问题