Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

27jan/086

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

This movie requires Flash Player 11

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.

Remplis sous: CheckBox, States || Taggé comme: , , , Laisser un commentaire

Articles similaires

Commentaires (6) Trackbacks (0)
  1. L'explication est très bonne. Merci pour ce tutorial.

  2. 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.

  3. 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+

  4. Bonjour,
    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 :D . Le code copié-collé devrait donc parfaitement marcher

    Fabien

  5. Bonjour,
    J 'aimerais savoir comment on fait un tableau de saisie en flex, quelqu'un peut me guider?
    merci

  6. Salut, qu'entends tu pas "un tableau de saisie" ? peut etre ta question serait plus pertinente sur un forum comme flexx.fr ;)

    Fabien


Leave a comment

(required)

Aucun trackbacks pour l'instant