Bonjour!
Je n’ai pas trouvé de tuto dans le wiki pour faire de la communication flash/php. (Vous allez rire, mais je n’ai pas trouvé le moyen d’ajouter ce tuto dans le wiki non plus, alors si quelqu’un sait comment faire…)
La communication client flash et serveur est une fonctionnalité de base dans flash qui est inscrite dans le fichier d’aide, mais si on ne sait pas où chercher, ça peut être long avant de trouver l’information pertinente. Je vous donne donc ma façon de faire, en espérant qu’elle simplifiera la vie aux intéressés.
Flash mx 2004
Actionscript 2
Je ne donne qu’un squelette de script ici : d’abord le script dans flash qui envoie une requete php au serveur, ensuite le script php qui reçoit la demande et renvoie des informations au client, puis retour au client flash qui reçoit l’info de php.
Je commence par vous envoyer le script du client flash bêtement, je l'explique ensuite :
Explication :
La commande «createEmptyMovieClip» permet de créer un clip vide nommé «clipCible» qui servira pour stocker les variables reçues du serveur lors de leur réception.
Ensuite, on greffe la fonction «onData» sur notre «clipCible». Cette fonction sera appellé dès que le client aura REÇU toutes les variables de php. (Dans mon exemple, la variable sera écrite dans la fenêtre Output puis le clip de réception sera effacé)
Finalement, la commande «loadVariables» se charge d'envoyer des informations au script php. Il faut utiliser un format html strict pour envoyer les variables : «cheminVersLaPagePhp» suivit d'un «?». Ensuite on ajoute les variables «nomDeVariable=Valeur». Si on doit envoyer plus d'une variable, on les accole grace au symbole «&», soit : «nomDeVariable=Valeur&nomDeVariable2=Valeur2».
Ce qu'il est important de comprendre ici, c'est que ce script est exécuté de façon asynchrome; il y a un laps de temps indéterminé entre l'envoie des variables à php et l'exécution du script de réception «onData». Ce laps dépend de la vitesse de connexion internet et de la complexité du script exécuté du côté php. Donc le script de flash continuera de s'exécuter en attendant que php renvoie ses variables, ce qui peut pauser des problèmes. J'ai tendance à bloquer tous les menus après l'envoie d'un «loadVariables» de la façon suivante :
Ainsi, à chaques fois que je fais un script de réception, je le nomme «clipCible». De cette façon, le client flash attendra la réception des variables php avant de continuer. Lors de l'exécution «onData», le clip est effacé, et on peut renvoyer une nouvelle commande.
Voici finalement le script php (le document s'appelle «addition.php» et est placé à la racine du site «www.siteweb.com»):
Encore une fois, si on avait plus d'une variable à renvoyer au client flash, il faut respecter le format html script décrit plus haut.
J'ai ajouter le symbole «&» à la fin des variables, car j'ai remarqué que parfois flash ne reçoit pas la dernière variable sans lui...
Voilà, j'espère que ce script vous sera utile. Si vous avez des questions, n'hésitez pas à mes les communiquer.
Je n’ai pas trouvé de tuto dans le wiki pour faire de la communication flash/php. (Vous allez rire, mais je n’ai pas trouvé le moyen d’ajouter ce tuto dans le wiki non plus, alors si quelqu’un sait comment faire…)
La communication client flash et serveur est une fonctionnalité de base dans flash qui est inscrite dans le fichier d’aide, mais si on ne sait pas où chercher, ça peut être long avant de trouver l’information pertinente. Je vous donne donc ma façon de faire, en espérant qu’elle simplifiera la vie aux intéressés.
Flash mx 2004
Actionscript 2
Je ne donne qu’un squelette de script ici : d’abord le script dans flash qui envoie une requete php au serveur, ensuite le script php qui reçoit la demande et renvoie des informations au client, puis retour au client flash qui reçoit l’info de php.
Je commence par vous envoyer le script du client flash bêtement, je l'explique ensuite :
Code :
_root.createEmptyMovieClip("clipCible", _root.getNextHighestDepth());
//
_root.clipCible.onData = function() {
//
trace(_root.clipCible.reponse);
//
_root.clipCible.removeMovieClip();
}
//
loadVariables("http://www.siteweb.com/addition.php?chiffreA="+10+"&chiffreB="+4, _root.clipCible);
Explication :
La commande «createEmptyMovieClip» permet de créer un clip vide nommé «clipCible» qui servira pour stocker les variables reçues du serveur lors de leur réception.
Ensuite, on greffe la fonction «onData» sur notre «clipCible». Cette fonction sera appellé dès que le client aura REÇU toutes les variables de php. (Dans mon exemple, la variable sera écrite dans la fenêtre Output puis le clip de réception sera effacé)
Finalement, la commande «loadVariables» se charge d'envoyer des informations au script php. Il faut utiliser un format html strict pour envoyer les variables : «cheminVersLaPagePhp» suivit d'un «?». Ensuite on ajoute les variables «nomDeVariable=Valeur». Si on doit envoyer plus d'une variable, on les accole grace au symbole «&», soit : «nomDeVariable=Valeur&nomDeVariable2=Valeur2».
Ce qu'il est important de comprendre ici, c'est que ce script est exécuté de façon asynchrome; il y a un laps de temps indéterminé entre l'envoie des variables à php et l'exécution du script de réception «onData». Ce laps dépend de la vitesse de connexion internet et de la complexité du script exécuté du côté php. Donc le script de flash continuera de s'exécuter en attendant que php renvoie ses variables, ce qui peut pauser des problèmes. J'ai tendance à bloquer tous les menus après l'envoie d'un «loadVariables» de la façon suivante :
Code :
_root.menuInscription.onPress = function() {
if(_root.clipCible == undefined){
/* script */
}
};
Ainsi, à chaques fois que je fais un script de réception, je le nomme «clipCible». De cette façon, le client flash attendra la réception des variables php avant de continuer. Lors de l'exécution «onData», le clip est effacé, et on peut renvoyer une nouvelle commande.
Voici finalement le script php (le document s'appelle «addition.php» et est placé à la racine du site «www.siteweb.com»):
Code :
<?php
//
$variableA = $_GET['chiffreA'];
$variableB = $_GET['chiffreB'];
//
$reponse= $variableA+ $variableB;
//
echo"reponse=$reponse&";
?>
Encore une fois, si on avait plus d'une variable à renvoyer au client flash, il faut respecter le format html script décrit plus haut.
J'ai ajouter le symbole «&» à la fin des variables, car j'ai remarqué que parfois flash ne reçoit pas la dernière variable sans lui...
Voilà, j'espère que ce script vous sera utile. Si vous avez des questions, n'hésitez pas à mes les communiquer.