2010-05-28 7 views
0

J'ai un peu de mal à travailler avec les états en Flex (ou Flash) 4. Disons que mon application a trois états; l'état (de base) par défaut, l'état 1 et l'état 2.Flex 4/Flash 4 Ajouter à l'état actuel

L'état 1 doit toujours être basé sur l'état de base, ce qui est assez facile à accomplir. Cependant, j'aimerais que l'état 2 soit basé sur l'état actuel (base ou état 1). Je ne peux pas pour la vie de moi le comprendre. J'ai essayé de définir la propriété basedOn de l'état 1 sur "this.currentState", mais cela bloque simplement mon navigateur.

<s:states> 
    <s:State name="default"/> 
    <s:State name="state1"/> 
    <s:State name="state2" basedOn="{this.currentState}"/> 
</s:states> 

<s:TitleWindow id="configWindow" includeIn="state1" width="250" height="100%" close="configWindow_closeHandler(event)"/> 
<s:Panel id="settings" includeIn="state2" width="200" height="200"/> 

Répondre

1

basedOn n'est pas une propriété Bindable, c'est pourquoi la valeur ne change pas dans votre code.

En théorie, il s'agit d'une propriété en lecture/écriture que vous pouvez modifier à l'exécution; mais vous devrez le faire manuellement, probablement en ActionScript.

D'après l'extrait de votre code; Je ne comprends pas pourquoi tu veux faire ça. Dès que vous changez l'état en 'state2' n'entrerez-vous pas dans une boucle étrange?

+0

Le fragment de code ci-dessus ne fonctionne pas - à cause de la définition incorrecte de la propriété basedOn. Pour l'état2, je veux ajouter aux éléments créés pour l'état1. À l'heure actuelle, lorsque je passe à state2 à partir de state1, les éléments de state1 sont supprimés, puisque state2 est par défaut basé sur l'état de base. – user163757

+0

Ajoutez la TitleWindow aux deux états, puis en utilisant une liste séparée par des virgules: includeIn = "state1, state2" – JeffryHouser

+0

Merci, les groupes includeIn et state ont fait l'affaire. – user163757