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

31jan/080

Flex States: Evénements associés aux States (enterState, exitState …)

Quatre événements sont associés aux changement d'états:

  • Lorsqu'un changement d'état est appelé, l'application ou le composant contenant l'état dispatch un événement currentStateChanging. Cet event est dispatché avant que l'état ne change vraiment
  • Une fois que l'état a changé, l'application ou le composant dispatch un événement currentStateChange. Les deux événements sont de type mx.events.StateChangeEvent. On utilise les constantes CURRENT_STATE_CHANGING et CURRENT_STATE_CHANGE pour ajouter des listeners (écouteurs d'événements). Aucun de ces événements n'est annulable, cela veut dire que vous ne pouvez pas empêcher un changement d'état de se faire en annulant un évenement currentStateChanging, par exemple. De plus, ces deux événements sont utilisés par le framework Flex créant les transitions pour détécter quand une transition doit être effectuée.
  • Les évenements (events) enterState et exitState sont déclenchés lorsqu'un état démarre et s'arrête respectivement. Ces deux états sont tous deux de type mx.events.FlexEvent (utilisez les constantes ENTER_STATE et EXIT_STATE pour ajouter des listeners (écouteurs d'événements):
    • L'événement enterState est lancé dès que l'état a commencé sa changement mais avant qu'il soit appliqué à la vue
    • L'événement exitState est lancé dès que l'état va s'arrêter.
  • L'événement enterState est dispatché par un objet State quand l'état démarre, et par une application ou un composant lorsqu'il retourne au baseState. L'événement exitState est dispatché par un objet State quand l'état se termine, et par une application ou un composant lorsqu'il retourne au baseState
Remplis sous: States Lire la suite
29jan/080

Flex States: Gestion de la politique de création d'objet (creationPolicy)

Par défaut, les composants n'appartenant pas à l'état de base ne sont pas instanciés tant que l'état qui les concerne n'est pas demandé. L'exemple suivant montre ce problème. La fonction trace(); donne en sortie null car button n'est pas encore défini lorsque l'application démarre pour la première fois.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
	layout="absolute"

	initialize="initializeHandler(event)"
	>
	<mx:states>
		<mx:State name="exemple">
			<mx:AddChild>
				<mx:Button id="button" label="Exemple"/>
			</mx:AddChild>
		</mx:State>
	</mx:states>
	<mx:Script>
		<![CDATA[
			private function initializeHandler(event:Event):void{
				trace (button);
			}
		]]>
	</mx:Script>
</mx:Application>

Cependant, vous pouvez gérer le moment où les composants ajoutés par les states sont instanciés en utilisant une "creationPolicy".

Remplis sous: States Lire la suite
28jan/080

Flex States: Overrides (AddChild, SetProperty, SetEventHandler) en ActionScript

Ajout et Suppression de Composant en ActionScript

Vous pouvez ajouter et supprimer des composants en MXML grâce aux tages <mx:AddChild> et <mx:RemoveChild>. Ils correspondent aux classes mx.states.AddChild et mx.states.RemoveChild.

Lorsque vous voulez ajouter des composants enfants en utilisant la classe AddChild, vous devez d'abord construire une nouvelle instance:

var addChild:AddChild = new AddChild();

En utilisant le MXML, vous insérez insérez le tag <mx:AddChild> directement. En ActionScript, vous devez assigner une référence au composant à la propriété "target" de l'objet AddChild.

var button:Button = new Button();button.label = "Exemple";
addChild.target = button;
28jan/081

Flex States: Création d'états en ActionScript

Dans la plupart des cas, il est plus approprié d'utiliser du MXML plutôt que de l'ActionScript pour définir des états. Seulement parfois, vous voulez définir des états dynamiquement, dans ce cas-là, vous devez utiliser ActionScript. Par exemple, si vous voulez créer un formulaire multi-page basé sur des données chargées à l'execution (runtime). Créer ce formulaire dynamiquement est avantageux car vous pouvez changer le formulaire sans avoir à recompiler et republier le SWF. Cependant, comme les éléments du formulaires ne sont pas connus à la compilation, vous ne pouvez pas utiliser le MXML pour les définir.

28jan/082

Flex States: Modifier l'écouteur d'événement (Event Handler) d'un composant

Pour changer l'écouteur d'événement d'un composant, on utilise le tag <mx:SetEventHandler>. Ce tag nécessite les 3 attributs suivant pour fonctionner correctement:

  • "target": référence vers l'objet auquel vous voulez appliquer la modification d'event handler
  • "name": nom du event handler à modifier
  • "handler": spécifie la valeur à appliquer à l'écouteur qui sera modifié

L'exemple suivant montre comment utilisez un bouton qui va faire basculer l'état "enabled" d'un champ de saisie. Cela se fait en changeant l'écouteur d'évenement du bouton (et son label) au clic.

Remplis sous: States Lire la suite