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

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.

Création de States en ActionScript

Quand vous créez des états en utilisant ActionScript, vous utilisez la classe mx.states.State. Vous pouvez utiliser le constructeur directement pour définir une nouvelle instance d'un State.

var stateA:State = new State();

Vous pouvez assigner un nom à l'état en utilisant la propriété "name", comme si vous utilisiez l'attribut name du tag <mx:State>:

stateA.name = "exampleStateA";

Tout comme vous utilisez l'attribut "basedOn" du taf <mx:State> pour définir l'héritage de l'état, vous pouvez utiliser la propriété "basedOn" de la classe State. La portion de code suivante définit un nouvel état basé sur l'état construit dans les deux lignes de code précédentes. Notez que la propriété "basedOn" attend une chaine (String) spécifiant le "name" de l'état sur lequel vous voulez baser le nouvel état; vous ne pouvez pas l'assigner à une référence de l'objet State.

var stateB:State = new State();

stateB.name = "exampleStateB";

stateB.basedOn = "exampleStateA";

Ajout de States en Action Script

Dans le MXML, vous utilisez le tag <mx:states> pour définir un tableau d'états pour une application ou un composant. En ActionScript, vous allez utiliser la propriété "states". La propriété "states" est définie dans UIComponent et est héritée par toutes les applications / composants. Le type de states est un Array, mais par défaut, cette propriété à une valeur null. Si vous voulez ajouter des états à une application ou à un composant en utilisant seulement de l'ActionScript, vous devez d'abord instancier un tableau:

states = new Array();

Une fois défini, ajoutez les états à votre tableau:

states.push(stateA);

states.push(stateB);

Ajout de modifications d'état en ActionScript (overrides)

Tout comme vous pouvez définir des modifications d'état (AddChild, SetProperty …) dans le MXML, vous pouvez les définir en ActionScript. Cependant, en plus du fait de définir des "overrides" (modification d'état), vous devez les ajouter à l'état. En utilisant le MXML, vous insérez simplement le tag de modification d'état dans le tag <mx:State>. En ActionScript, vous devez utiliser la propriété "overrides" de la classe State.

La propriété "overrides" est défini comme un Array (tableau). Cependant, par défaut, la propriété "overrides" d'un objet State a la valeur undefined. C'est pourquoi vous devez d'abord définir la propriété "overrides" comme un tableau à un état en ActionScript:

stateA.overrides = new Array();

Une fois que vous avez défini la propriété "overrides" comme un tableau, vous pouvez ajouter les overrides (modifications d'état) au tableau:

stateA.overrides.push(exampleAddChild);

Articles similaires

Commentaires (1) Trackbacks (0)
  1. Bonjour,

    J'ai bien compris comment créer un état, mais la question que je me pose c'est comment l'affecter à un composant Flex créer en as3

    En Flex il y a la propriété includeIn (par exemple sur un composant FormItem) mais il est impossible de l'atteindre lorsque FormItem est générer en AS3

    Pouvez en dire plus a ce sujet, s'il vous plait ?

    Bien cordialement.


Leave a comment

(required)

Aucun trackbacks pour l'instant