Je charge un composant qui effectue un appel HTTPService pour obtenir des données qui seront ensuite utilisées pour définir certaines variables dans le composant. Je fais l'appel HTTPService dans une fonction init() (pour l'événement d'initialisation), puis définissez les variables en fonction des données reçues dans le gestionnaire de résultats HTTPService. Cependant, les variables sont toujours nulles à la fois à l'étape initialize et à l'étape creationComplete. Si j'essaie de lire les variables dans une fonction creationComp() (pour l'événement creationComplete), ces variables sont toujours nulles. Est-ce correct? Je suppose que je ne comprends pas très bien le cycle d'initialisation de flexion. Quand ces variables sont-elles réellement définies et disponibles pour être utilisées? J'ai besoin de manipuler ces variables automatiquement après le chargement des composants. Y at-il un événement qui vient après creationComplete qui est approprié ou d'une autre manière d'aborder cela? J'utilise Flex 3.Définition des variables lors de l'initialisation du composant dans Flex
Répondre
Votre compréhension du cycle de vie des composants Flex est correcte; initialise les incendies d'événements avant la créationComplete.
Cependant, un appel HTTPService est une opération asynchrone distincte. Le gestionnaire de résultats n'est pas garanti d'être appelé au moment où l'événement creationComplete se déclenche. Vous devriez faire la manipulation des variables dans le gestionnaire de résultat à la place.
Vous devez penser à empêcher l'envoi de l'événement creationComplete de votre composant jusqu'à ce que HTTPService soit renvoyé, puis distribuer manuellement l'événement.
Cela réglerait vos problèmes de synchronisation.
Comment puis-je savoir quand le HTTPService est retourné (voulez-vous dire en mettant la logique dans le gestionnaire de résultat HTTPService?) Et comment retarder l'événement creationComplete jusqu'à ce qu'une certaine condition soit remplie (comme HTTPService retourné)? – Steven
Le service HTTP distribue l'événement de résultat lorsqu'il reçoit des données. http://help.adobe.com/fr_FR/FlashPlatform//reference/actionscript/3/mx/rpc/http/HTTPService.html#event:result –
L'événement creationComplete est distribué par votre composant dans la méthode set initialized qu'il hérite de UIComponent. Si vous remplacez cette méthode et empêchez l'envoi de l'événement ici, vous pouvez l'envoyer dans le gestionnaire pour l'événement de résultat du service http. –
Merci, c'est logique. J'ai fait un peu plus de tests et les variables étaient parfois définies par les feux de création de temps mais parfois non. – Steven
Oui, cela l'explique parfaitement. Si vous devez accéder à ces valeurs depuis l'extérieur de votre composant, vous devez écouter l'événement de résultat distribué par HTTPService dans le composant, puis envoyer un événement approprié du composant pour avertir les écouteurs externes. – joshtynjala