2010-06-17 5 views
0

Je transfère mon application Flex3 vers Flex4 (FlashBuilder4). Je reçois tout le nouveau concept d'état, sauf une chose. Dans un composant personnalisé (fichier mxml séparé), j'utilise l'état principal de l'application. En Flex3 il était:État de l'application Flex4 dans un composant personnalisé

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

En Flex4 il devrait être quelque chose comme ça:

<mx:State name="only_view_mode" /> 

et

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

Ma question est: comment puis-je accéder à une application état d'un composant? J'ai vérifié la référence officielle (http://www.adobe.com/go/learn_flex4_alldocumentation_en) et Google bien sûr mais sans succès.

Merci à l'avance

Répondre

0

Cela ne fonctionne pas vraiment car il nécessite une chaîne. Je l'ai essayé de toutes les façons possibles. Jusqu'à présent, je suis venu avec cette solution très laide: ajouter un écouteur d'événements pour les changements d'état checkint de mon principal composant de niveau:

<?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> 

S'il vous plaît laissez-moi savoir s'il y a une meilleure solution. Btw, j'ai l'intuition que l'attribut basedOn du composant State est le chemin à parcourir. Mais je ne sais pas quel type de format il attend:

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