2010-08-28 39 views
0

Prenons l'exemple suivant:Existe-t-il un événement dans Flex qui se déclenche lorsque toutes les opérations dans une balise mx: state sont terminées?

<mx:State name="sayHello"> 
      <mx:SetProperty name="preText" target="{this}" value="Hello"><mx:SetProperty> 
</mx:State> 

Puis-je savoir en quelque sorte lorsque la propriété de Prétexte a été réglé bonjour?

déjà essayé avec: state-> activer state-> enterState state-> exitState

et

UIComponent-> currentStateChange

Dans tous les cas ci-dessus, la propriété de prétexte est nul , mais en quelque sorte, plus tard, il obtient la valeur désirée (j'ai testé avec une minuterie)

Toute aide serait géniale! Merci!

Répondre

0

C'est difficile à dire. La plupart des propriétés implémentées par le Framework Flex expédient un propertyChangedEvent. Donc, dans ce cas, vous pouvez écouter l'événement preTextChanged sur le composant en question pour vous informer que la propriété a changé.

Si cela est une propriété que vous vous mis en œuvre, juste faire les propriétés de méthode définie distribuent l'événement, comme celui-ci:

dispatchEvent(new Event('preTextChanged')); 

Ajouter l'auditeur comme ceci:

this.addEventListener('preTextChanged',onpreTextChanged); 

Vous ne être capable d'écouter l'événement de changement de propriété en MXML si vous ne définissez pas de métadonnées d'événement pour l'événement; et la plupart des composants ne prennent pas la peine de définir des métadonnées pour l'événement propertyChanged.

Le fait de modifier un état peut prendre du temps. En raison de la nature asynchrone de Flex/Flash Player quelque chose comme ceci:

currentState = newState 
trace(preText); 

La valeur de trace sera très probablement pas encore défini car le traitement de changement d'état ne se produit pas encore. Vous pourriez être en mesure d'écouter l'événement currentStateChange, alors. Quand cela distribue vos propriétés devraient tous être modifiés.