Question

je peux faire ceci:

<s:Button id="Btn" enabled.State1="false" />

Mais le code suivant me donne une erreur.

 private function enableDisable():void{
       Btn.enabled.State1="false";  //Error: Access of undefined property State1
      }

comment code enabled.State1 dans ActionScript?

Merci

Était-ce utile?

La solution

Je sais que ce n'est pas ce que vous voulez entendre, mais ici, il va de toute façon: pourquoi voulez-vous faire? Le seul but des Etats est que vous n'auriez pas à écrire des tonnes d'ActionScript pour faire la même chose.

Pourquoi vous ne pouvez pas le faire comme ça

En écrivant Btn.enabled.State1 dans ActionScript vous êtes essentiellement dire: donnez-moi la propriété appelée « State1 » de l'instance booléenne appelée « activée ». Il est évident que cela ne fonctionnera pas parce qu'un booléenne ne dispose pas d'un tel bien. Vous confondez le point MXML notation (.) - utilisée pour attribuer des valeurs aux propriétés basées sur des états - avec la notation ActionScript dot -. Utilisée pour la lecture / écriture des propriétés

Une solution ou aussi près que possible

Comme il est de la nature même de cette fonction que vous utiliseriez dans MXML, vous ne pouvez pas faire exactement ce que vous demandez dans ActionScript. La meilleure chose serait d'écouter StateChangeEvent propriété en programmée du bouton « permis » selon le nouveau nom de l'État.

addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE, onStateChange);

private function onStateChange(event:StateChangeEvent):void {
    switch (event.newState) {
        case "wrong":   Btn.enabled = false; break;
        case "correct": Btn.enabled = true; break;
    }
}

(j'utilise les mêmes états que dans la réponse de James)

Autres conseils

Je pense que vous pouvez utiliser les états dans le mauvais contexte. Par exemple, vous avez composant qui contient une entrée utilisateur avec un bouton à côté de lui. Le bouton est activé uniquement lorsque le mot correct est entré. Vous définiriez deux états pour le composant, peut-être correct et wrong.

<s:states>
    <s:State name="wrong" />
    <s:State name="correct" />
<s:states>

Vous pouvez ensuite, semblable à ce que vous avez fait ci-dessus, définir des propriétés individuelles pour les boutons en fonction de l'état:

<s:Button id="Btn" enabled.wrong="false" enabled.correct="true" />

Par défaut, l'état du composant serait wrong. Après avoir manipulé l'entrée d'utilisateur et de vérifier si le mot correct est entré, l'état du composant serait changé correct.

Normalement, les propriétés spécifiques à l'état des composants sont fixés au moment de la compilation et l'état du composant lui-même a changé lors de l'exécution.

Voici un aperçu des états dans Flex 4.6

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top