banner

Précédent   InfographiK - Communauté Graphique > FLASH & ACTION SCRIPT > Flash niveau Avancé > Flash dynamique

Réponse
 
LinkBack Outils de la discussion
  #1 (permalink)  
Vieux 24/04/2007, 18h55
Avatar de Adddvancer
Archives d'adddvance
 
Date d'inscription: March 2007
Messages: 49
Zoom [Flash communication server 1.5] Méthode call

Salut à vous..
Un premier post sur une question assez récurente.. Une méthode de communication simple entre Flash communication server et votre application, via la méthode call.

La méthode call côté serveur sera associé à l'objet Client. Prenons un exemple.

Côté serveur [main.asc] :

ActionScript Code:
  1. //---------------------------------------
  2. application.onConnect = function(clientObj) {
  3.      this.acceptConnection(clientObj);
  4.      clientObj.call("addition"null, 50, 10);
  5. }
  6. //---------------------------------------
  7.  

Lorsque vous lancez votre application, une liaison est alors établi avec le serveur et le gestionnaire d'évènement onConnect de notre application est alors appelé. Le premier paramètre de ce gestionnaire est l'instance du client qui cherche à ce connecter. Ici nous acceptons sa connection sans contrôle particulier de status.

Ici, la méthode call sert à lancer des fonctions sur le client connecté.
Son premier paramètre est le nom de la méthode appellée. Le second paramètre donne la possibilité d'envoyer un objet de résultat, mais on verra cela par la suite...
Ici, nous laissons ce paramètre sur null car notre méthode somme n'a pas d'information à renvoyer ensuite au serveur.
Ensuite, l'on peut passer autant de paramètres que l'on veut. Ici, juste deux chiffres à aditionner suffiront.

Voyons maintenant ce qui ce passe côté client :

ActionScript Code:
  1. //---------------------------------------
  2. // Instance de l'objet NetConnection
  3. nc = new NetConnection();
  4.  
  5. // Méthode associée à l'objet NetConnection
  6. nc.addition= function(v1, v2) {
  7.      trace(v1+v2);
  8. }
  9.  
  10. // Connection au serveur FCS via rtmp
  11. nc.connect("rtmp://localhost/exo");
  12. //---------------------------------------
  13.  

Côté client, la méthode somme est associé à notre instance de NetConnection.
Si vous testez votre application, nous lui envoyons bien deux paramètres, que notre méthode va donc ensuite aditionner.

Bon essayons maintenant de faire l'inverse.. Nous allons appellé une méthode, côté serveur, et récupérer après côté client un objet Résultat, qui nous permettera, ben.. d'exploiter ce résultats

Côté client :

ActionScript Code:
  1. //---------------------------------------
  2. // Instance de l'objet NetConnection
  3. nc = new NetConnection();
  4. // Connection au serveur FCS via rtmp
  5. nc.connect("rtmp://localhost/exo");
  6.  
  7. // Méthode call
  8. nc.call("addition", new resultat(), 20, 50);
  9. //---------------------------------------
  10.  

Ici, c'est notre instance NetConnection qui appelle une méthode côté serveur, en lui envoyant trois paramètres.
En deuxième paramètre, ici, nous déclarons en plus un objet resultat que nous construirons plus tard pour récupérer ce que nous renverra le serveur.

Côté serveur :

ActionScript Code:
  1. //---------------------------------------
  2. application.onConnect = function(clientObj) {
  3.  
  4.      this.acceptConnection(clientObj);
  5.  
  6.      clientObj.addition= function(v1, v2) {
  7.            return (v1+v2);
  8.      }
  9. }
  10. //---------------------------------------
  11.  

Construisons maintenant notre objet de récupération, côté client :

ActionScript Code:
  1. //---------------------------------------
  2. function resultat() {
  3.      this.onResult = function(Val) {
  4.            trace("La somme est : "+Val);
  5.      };
  6. }
  7. //---------------------------------------
  8.  

Deux méthodes sont disponibles pour cette objet de récupération. La méthode onStatus et onResult. Ici, nous utilisons la méthode onResult qui est appellé dès l'arrivée du résultat et stocké dans son paramètre, ici "val".

A noter dans l'exemple au dessus qu'il est possible de déclarer de 2 autres façons l'objet qui permet de récupérer la valeur transmise par la fonction appelée sur le seveur par la méthode call :

- Méthode 1
ActionScript Code:
  1. var url = "rtmp://localhost/exo" ;
  2. var nc = new NetConnection() ;
  3. nc.connect(url) ;
  4.  
  5. var responder = {} ;
  6. responder.onResult = function( value ) {
  7.       trace ("le résultat est : " + value) ;
  8. }
  9.  
  10. nc.call ("addition", responder, 20, 50) ;

- Méthode 2 : création d'une classe AS1
ActionScript Code:
  1. // ---- Class Responder
  2.  
  3. // ---- Constructor
  4. _global.Responder = function () {}
  5.  
  6. // ---- Methods
  7. Responder.prototype.onResult = function( value ) {
  8.       trace (this + " :: onResult -> le résultat est : " + value) ;
  9. }
  10.  
  11. Responder.prototype.toString = function () {
  12.      return "[Responder]" ;
  13. }
  14.  
  15. // ---- test d'utilisation
  16.  
  17. var url = "rtmp://localhost/exo" ;
  18. var nc = new NetConnection() ;
  19. nc.connect(url) ;
  20. nc.call ("addition", new Responder(), 20, 50) ;

A noter qu'il est possible aussi de coder la classe au dessus en AS2. Mais ceci est une autre histoire.
Réponse avec citation
Réponse

Outils de la discussion

Règles de messages
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui



Fuseau horaire GMT +2. Il est actuellement 15h11.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0 Tous droits réservés.
Version française #13 par l'association vBulletin francophone

Communauté Graphique
CNIL : 1130886