dialogue avec d’autres Applets en Flash/Action Script


TracenPoche peut être relié à d’autres applets écrites en Flash/Action Script, indépendantes du code source de TeP lui-même !

Voici 4 exemples :
- tableau de valeurs construit à partir d’une figure (Flash) ou sa version utilisable en classe :
l’applet Tableau affichée dans une page HTML "basique" à côté d’une applet TeP demande à TeP de lui transmettre les valeurs de certaines variables à la demande ou à intervalles réguliers.
- un grapheur de fonctions (Flash) ou un autre (Flex)  :
on définie la fonction par sa formule f(x) et les intervalles d’affichage en abscisses et ordonnées. L’applet affichée au-dessus de TeP demande à TeP de construire la figure à partir du script qu’elle a fabriqué en dehors de TeP.
- le code source compressé (avec les swf) d’une petite démo écrite pour MTASC : une applet TeP est lancée (dans un navigateur, en autonomie avec un player Flash) et la démo récupère la valeur d’une variable du script TeP affiché.

Contrairement à TePnoyau qui s’intègre DANS une applet écrite en Flash/Action Script, pas besoin de connaître les subtilités d’incorporation d’une applet dans une autre, tout en ayant accès à des fonctionnalités suffisantes.

Enfin, cerise sur le gâteau, tout ceci peut se faire librement et gratuitement avec les compilateur Action Script comme MTASC et consors.

Pour le moment, il faut utiliser la version en débogage de TeP contenue avec le code source compressé de la démo.


Codes à intégrer dans son applet

- Envoyer une requête à TeP :
il faut utiliser une variable LocalConnection qui va envoyer à TeP un ordre avec des paramètres. Typiquement :

var sendingLC = new LocalConnection() ;
sendingLC.send("tep", "methodToExecute", ordre, parametre) ;

  • ordre est une chaîne texte choisie parmi : recupVal, recupScript, envoiVal, envoiScript
  • paramètre est une chaîne texte, généralement une liste de paramètres séparés par le caractère ¤, dépendante de l’ordre.

- Recevoir une réponse à la requête : il faut utiliser une variable LocalConnection qui va recevoir de TeP un ordre avec des paramètres. Typiquement :

var receivingLC = new LocalConnection() ;
receivingLC.methodToExecute = function(param1,param2) {
 trace("RETOUR :"+param1+" + "+param2) ;
 if(param1=="retVal") {
 //retourValeur ou returnValue
 var valeurs=param2.split("¤") ;
 // ...
 }
}
receivingLC.connect("tableau") ;

  • la fonction methodToExecute traite les réponses de TeP suivant l’ordre précédemment passé en requête :
    • param1 contient en général une confirmation de l’ordre ou un simple ok
    • param2 contient éventuellement un complément à cet ordre en retour ou l’ordre passé en requête.

Les 4 requêtes possibles

- 1-Récupérer le script affiché dans TeP

Envoi de requête :

  • ordre = recupScript ou getScript
  • paramètre = vide.

Réponse à la requête :

  • param1 = retScript
  • param2 = le script complet sous forme d’une seule chaîne (séparateur ;).

exemple :

sendingLC.send("tep", "methodToExecute", "recupScript" ,"") ;

- 2-Envoyer un script à TeP

Envoi de requête :

  • ordre = envoiScript ou setScript
  • paramètre = le script complet en une seule chaîne.

Réponse à la requête :

  • param1 = ok
  • param2 = l’ordre passé (envoiScript ou setScript selon).

exemple :

sendingLC.send("tep", "methodToExecute", "envoiScript" ,"") ;

- 3-Récupérer la valeur d’une variable ou d’un texte affiché dans TeP

Envoi de requête :

  • ordre = recupVal ou getVal
  • paramètre = chaîne contenant la liste des noms de variables demandées séparées par le caractère ¤.
    Sont considérés comme variables de TeP les objets Reel, Entier, Var, VarSi et Texte.

Réponse à la requête :

  • param1 = retVal
  • param2 = chaîne contenant la liste des valeurs demandées séparées par le caractère ¤. En cas d’absence de l’objet dans TeP un ? est retourné comme valeur.

exemple :

sendingLC.send("tep", "methodToExecute", "recupVal" ,"x¤aireAB¤texte1") ;

- 4-Modifier la valeur d’une variable ou d’un texte affiché dans TeP

Envoi de requête :

  • ordre = envoiVal ou setVal
  • paramètre = chaîne contenant la liste des noms de variables suivies de leur nouvelle valeur, séparés par le caractère ¤.
    Sont considérés comme variables MODIFIABLES les objets Reel, Entier, Var et Texte.

Réponse à la requête :

  • param1 = ok
  • param2 = l’ordre passé (envoiVal ou setVal selon).

exemple :

  • la variable x est forcée à 5, le texte1 affiche coucou et le texte2 affiche la valeur de la longueur AB calculée par TeP.

    sendingLC.send("tep", "methodToExecute", "envoiVal" ,"x¤5¤texte1¤coucou¤texte2¤#AB=#") ;


Nom de la connexion de réception

Il est prévu de pouvoir dialoguer avec plusieurs "applets de pilotage" dans une même page HTML.

Pour cela, il faut que TeP sache à qui renvoyer l’information, ie connaître le nom de l’objet LocalConnection à qui répondre. Par défaut, c’est le nom tableau qui est utilisé. Mais on peut le changer lors de l’envoi d’un ordre, il suffit de compléter l’ordre par ¤ suivi du nom de la connection à qui répondre.

Exemple :

sendingLC.send("tep", "methodToExecute", "recupScript¤maconnexion" ,"") ;

  • Ainsi au lieu de receivingLC.connect("tableau") ;
    on aura mis receivingLC.connect("maconnexion") ;.

Nom de la connexion de TeP

Il est prévu de pouvoir dialoguer avec plusieurs applets de TeP dans une même page HTML.

Pour cela, il faut dire à TeP quel nom de objet LocalConnection il doit utiliser pour attendre un ordre. Par défaut c’est le nom tep. Mais on peut le changer en ajoutant en ligne de commande du code HTML pour insérer une applet Flash le paramètre nomlocalconnection= suivi du nom à utiliser.

Exemple :
Code HTML de la page :

...
... param name="movie" value="tracenpoche.swf ?nomlocalconnection=toto"
...
... src="tracenpoche.swf ?nomlocalconnection=toto"

Code ActionScript pour envoyer un ordre à ce TeP :

sendingLC.send("toto", "methodToExecute", "recupScript" ,"") ;

Dysfonctionnements

- Sous FireFox, quand on affiche les 2 applets TeP et Tableau de valeurs, le lecteur Flash rend certaines touches non utilisables dans l’une ou l’autre des applets. Cela ne se produit pas avec MSIE.

Documents joints