2010-08-06 5 views
1

J'ai deux applications Web écrites en Flex que j'aimerais intégrer. Je voudrais une application Flex (appelons l'application A) pour invoquer la deuxième application Flex (appelons l'application B). L'application A n'a accès qu'au fichier swf de l'application B (pas au code source). Lorsque l'application A appelle l'application B, elle devrait être en mesure de transmettre certaines données à l'application B. Une fois l'application B appelée, elle devrait être en mesure de renvoyer certaines données à l'application A. Ces deux applications seront hébergées sur le même serveur. utiliser un code serveur différent. La manière la plus simple d'implémenter ceci (ou l'une des façons d'être plus précise) serait d'avoir un élément de l'interface utilisateur sur l'application A (bouton, lien, élément de menu, etc.) qui invoquerait l'application B. Mais dans ce cas , deux applications Flex ne pouvaient pas communiquer directement (puisqu'une seule est active à la fois), et elles devraient communiquer via le code du serveur, ce que je voudrais éviter. Dans l'application courte, A doit appeler l'application B, lui transmettre des données. L'application B devrait faire son travail, afficher du contenu, et avoir un moyen de transmettre certaines données à l'application A.Communication entre deux applications Flex

Je connais LocalConnection, et j'ai vu question similaire, mais dans ce cas, j'aurais avoir les deux applications dans la même fenêtre de navigateur. Ce serait acceptable dans une certaine mesure, mais seulement si l'application B est contenue dans l'application A (pas si elles sont toutes les deux sur la même page HTML). LocalConnection fonctionnerait-il dans ce cas?

Avez-vous des recommandations sur la façon de mettre en œuvre ce type de communication?

Répondre

1

Vous pouvez utiliser un LocalConnection pour communiquer directement entre deux fichiers SWF basés sur le Web. Il devrait y avoir aucune limitation que les deux applications sont dans la même fenêtre de navigateur. Ils doivent tous les deux fonctionner sur la même machine.

Je ne sais pas exactement ce que vous voulez dire par le fait qu'une application Flex invoque la seconde. Mais, vous devriez être capable d'utiliser NavigateToURL pour charger une autre page. Je crois qu'il supporte de nouvelles fenêtres, qui seraient effectivement une application en lançant une autre. Vous pourriez également être en mesure de se moquer de quelque chose avec iFrames et ExternalInterface.

1

Il y a une autre façon de le faire. Vous pouvez charger() le deuxième swf par régulière Loader, que vous pouvez faire:

var app:Class = mLoader.contentLoaderInfo.applicationDomain.getDefinition("mx.core::Application"); 

..ou quelque chose comme ça (celui-ci ne fonctionne pas, je ne sais pas pourquoi, mais avec un réglage plus fonctionnera). Gardez à l'esprit que vous pouvez également utiliser describeType pour obtenir plus d'informations sur les classes lors de l'exécution. Donc, quand vous obtenez l'application, je pense à partir de là il peut y avoir des interfaces ou des répartiteurs/auditeurs d'événements ... c'est à vous de décider :)

Questions connexes