1 votes

Intégration et communication d'une application Flex avec une ancienne application Flash 8

Je maintiens actuellement une application écrite en Flash 8 (AS2) qui est utilisée pour intégrer et contrôler certains SWF générés automatiquement. Les SWF auto-générés sont également en Flash 8 (en fait, ils fonctionnent au moins en 7, peut-être même plus ancien), de sorte que mon application actuelle est capable de référencer directement des variables et des fonctions dans le SWF intégré.

Nous travaillons actuellement sur une nouvelle version de cette application, écrite en Flex. Nous devons reproduire la fonctionnalité de l'application actuelle, qui consiste à intégrer et à contrôler les SWF AS2 générés automatiquement. Cependant, les SWF basés sur AS3 ne peuvent pas référencer des variables ou des fonctions dans un SWF basé sur AS2. Malheureusement, nous n'avons pas le contrôle de l'outil de génération automatique, et nous ne pouvons donc pas le modifier pour produire des SWF basés sur AS3.

La seule véritable solution pour faire communiquer les SWF AS3 et AS2 est d'utiliser LocalConnection. Je devrais créer un SWF AS2 enveloppant qui chargerait le SWF auto-généré et agirait comme un proxy, communiquant avec mon application Flex via LocalConnection et faisant tout ce qui doit être fait sur le SWF auto-généré. Mais il y a un problème. Le SWF proxy doit savoir quel identifiant LocalConnection utiliser, mais je ne trouve pas de moyen de lui communiquer cet identifiant (je ne peux pas coder en dur un identifiant aléatoire, car je dois pouvoir supporter simultanément plusieurs instances de cette application).

Quelqu'un a-t-il résolu ce problème ? Existe-t-il un moyen d'obtenir une sorte d'identifiant unique pour le SWF intégré ?

2voto

Theo.T Points 4739

Je ne suis pas sûr de comprendre exactement comment fonctionne l'application, alors excusez-moi si je me trompe. Si l'instance flex doit charger le proxy AVM1, ne serait-il pas possible d'injecter un flash-var via l'URL contenant un ID généré pour la LocalConnection à utiliser ?

En plus de votre commentaire, je viens d'ajouter comment envoyer des variables au film AVM1. Cela fonctionne bien localement au moins (pas testé sur le réseau) :

AS3 - FP10 :

loader = new Loader();

var request:URLRequest = new URLRequest("as2proxy.swf");
var variables:URLVariables = new URLVariables();
variables.id = "local_connection_id";
request.data = variables;

loader.load(request);

AS2 - FP7 (première image sur la ligne de temps de "as2proxy.swf" ) :

trace(id); // (_root.id)

BTW, je suis tombé sur le cours suivant de Libspark : http://www.libspark.org/svn/as3/ForcibleLoader/src/org/libspark/utils/ForcibleLoader.as

0voto

Assaf Lavie Points 20181

Les deux pourraient-ils communiquer par l'intermédiaire d'un serveur (c'est-à-dire d'un médiateur) ?

0voto

Luke Bayes Points 2319

Voici un article assez impliqué sur le sujet de la communication à travers les frontières de l'AVM :

http://asserttrue.com/articles/2006/05/16/library-type-assets-in-actionscript-3-0-using-assets-created-with-current-releases-of-flash-authoring

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X