Flex States: Création et application d'états simples
Vous pouvez créer des états aussi bien au niveau de l'application qu'au niveau d'un composant. Le processus de création d'états est le même dans les deux cas. Bien que l'on puisse créer des états en ActionScript, il est bien plus commun et pratique de créer ses states par le biais du MXML.
Création d'états Flex (Flex states)
Chaque application a une propriété states qui permet de définir un tableau d'états. Depuis le MXML, vous pouvez utiliser cette syntaxe pour peupler ce tableau d'états:
<mx:states>
<!-- State elements -->
</mx:states>
Les States sont des instances de la classe mx.states.State, et on crée un nouvel état en utilisant le tag MXML <mx:State>. Lorsque vous créez un nouvel état, vous devez, au minimum, lui spécifier la propriété "name". La propriété "name" d'un état est l'identifiant par lequel il sera référencé.
La portion de code suivante crée un nouvel état dont le nom est exampleState:
<mx:State name="exampleState"></mx:State>
A l'intérieur du tag <mx:State>, vous pouvez spécifier la définition du style. Une définition de style peut consister à:
- Ajouter ou supprimer des composants
- Assigner des propriétés
- Assigner des styles
- Assigner des écouteurs d'evenements (event handler)
Application d'un état Flex
Par défaut, l'état de base (base state) est appliqué à l'application ou au composant. Vous pouvez définir plusieurs états pour chaque application / composant, mais vous ne pouvez appliquer qu'un seul état à la fois. Vous pouvez appliquer un état en utilisant la propriété "currentState".
L'exemple suivant définit un état qui ajoute une CheckBox. Cet état est appliqué quand l'utilisateur clique sur le bouton à l'état de base.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="horizontal"
verticalAlign="middle"
viewSourceURL="srcview/index.html">
<mx:states>
<mx:State name="newCheckbox">
<mx:AddChild relativeTo="{vbox}">
<mx:CheckBox id="checkbox" label="New Checkbox" />
</mx:AddChild>
</mx:State>
</mx:states>
<mx:VBox id="vbox">
<mx:Button label="Ajouter" click="currentState='newCheckbox'"/>
</mx:VBox>
</mx:Application>
Flex Source Code Download: Télécharger le code source complet de l'application
On peut voir que la valeur de la propriété currentState est une chaine spécifiant le nom de l'état à appliquer. Dans l'exemple précédent, lorsque l'utilisateur clique sur le bouton, la valeur newCheckbox est assigné à la propriété currentState de l'application. Flex cherche ensuite un état dont l'attribut name correspond à newCheckbox et applique cet état. Dans cet exemple, l'état utilise un tag <mx:AddChild> pour créer une nouvelle checkbox à l'instance de VBox.
Si vous voulez revenir à l'état de base, vous pouvez assigner une valeur null ou une chaine vide à la propriété currentState
La propriété currentState est une propriété héritée de la class UIComponent. Cela veut dire que chaque application et chaque composant à sa propre propriété currentState, et peut appliquer des états indépendemment.
Articles similaires
- Flex States: Définir des états basés sur des états existants
- Flex States: Modifier le Style d'un Composant
- Flex States: Création d'états en ActionScript
- Flex States: Ajouter et Supprimer des Composants
- Flex States: Modifier la propriété d'un composant
Aucun trackbacks pour l'instant






18 novembre 2008
L'explication est très bonne. Merci pour ce tutorial.
22 novembre 2008
Salut,
J'ai juste une petite remarque par rapport au rendu HTML de cette page, et des autres pages du site. Il s'agit uniquement d'un problème de rendu, qui ne remet pas en cause l'excellence de ce site.
Voilà, quand je colle le code de l'exemple dans Flex Builder, j'obtiens l'erreur suivante :
A la ligne numéro 7 : ""
Open quote is expected for attribute "name".
Pour une raison que j'ignore, les doubles guillemets autour de l'attribut "name" ne sont pas de vrais guillemets. Visuellement, ça ressemble à un double guillemet, mais ce n'en est pas un.
J'efface ce caractère et je le remplace par un "vrai double guillemet" (touche [3] sur mon clavier AZERTY). Et ça compile.
Merci encore pour ce tutorial.
22 novembre 2008
Juste une autre remarque, par rapport au rendu HTML. Il y a aussi un problème avec la ligne 14 :
<mx:Button label="Ajouter" click="currentState='newCheckbox';"/>
1093: Erreur de syntaxe.
Je change
click=”currentState=’newCheckbox’”
Par:
click="currentState='newCheckbox'"
Et tout va bien
A+
26 novembre 2008
Bonjour,
. Le code copié-collé devrait donc parfaitement marcher
le problème de quotes a été réglé grâce au plug-in WordPress Unfancy Quote qui a remplacé toutes ces curly braces dans le code
Fabien
23 mars 2009
Bonjour,
J 'aimerais savoir comment on fait un tableau de saisie en flex, quelqu'un peut me guider?
merci
23 mars 2009
Salut, qu'entends tu pas "un tableau de saisie" ? peut etre ta question serait plus pertinente sur un forum comme flexx.fr
Fabien