Salut !
Personnellement, je trouve que amfphp est une usine à gaz et qu'il n'est pas forcément utile pour de petits projets. Tant que l'on a pas des tableaux ou des objets à échanger entre Flash et PHP, autant rester avec une méthode plus classique (l'architecture d'amfphp est plus contraignante côté serveur).
Par contre, Blarg, je trouve que le code est plus propre et les résultats plus faciles à utiliser lorsque l'on utilise la classe LoadVars avec flash (il est d'ailleurs précisé dans la doc que la fonction loadVariables lit des données dans un fichier externe tandis que pour la classe LoadVars, on parle bien d'envoi et de réception de données).
Un exemple du fonctionnement de ce code :
Le fichier php est légèrement différent :
Personnellement, je trouve que amfphp est une usine à gaz et qu'il n'est pas forcément utile pour de petits projets. Tant que l'on a pas des tableaux ou des objets à échanger entre Flash et PHP, autant rester avec une méthode plus classique (l'architecture d'amfphp est plus contraignante côté serveur).
Par contre, Blarg, je trouve que le code est plus propre et les résultats plus faciles à utiliser lorsque l'on utilise la classe LoadVars avec flash (il est d'ailleurs précisé dans la doc que la fonction loadVariables lit des données dans un fichier externe tandis que pour la classe LoadVars, on parle bien d'envoi et de réception de données).
Un exemple du fonctionnement de ce code :
// on déclare un objet d'envoi, instancié depuis la classe LoadVars
var envoi_lv:LoadVars = new LoadVars();
// on ajoute des variables à cet objet
envoi_lv.chiffre1 = 24;
envoi_lv.chiffre2 = 42;
// on déclare un objet de réception
var reception_lv:LoadVars = new LoadVars();
// la fonction qui s'exécute lorsque l'objet reception_lv reçoit l'information que les données ont été chargées.
//"success" est ici un booléen qui est automatiquement renvoyé par onLoad.
reception_lv.onLoad = function(success:Boolean)
{
// les données ont été correctement chargées
if (success)
{
// on peut directement utiliser le résultat sans pour autant devoir le
// charger dans un clip (ce qui permet des traitements dans Flash si nécessaire)
trace("résultat de l'addition : " + reception_lv.resultat);
}
// en cas d'échec de la connexion
else
{
trace("la connexion a échoué");
}
};
// on envoit les données à PHP avec la méthode sendAndLoad
// paramètre 1 : le script php cible
// paramètre 2 : un objet LoadVars récepteur
// la méthode d'envoi (POST ou GET)
envoi_lv.sendAndLoad("http://www.monsite.fr/addition.php", reception_lv, "POST");
Le fichier php est légèrement différent :
Code PHP :
<?php
// une fonction pour formater le retour
function retour($var, $val)
{
echo "&" , $var , "=" , utf8_encode($val);
}
// on récupère les information transmises par LoadVars
$a = $_POST['chiffre1'];
$b = $_POST['chiffre2'];
// traitement
$resultat = $a + $b;
// on renvoie vers Flash
retour("resultat", $resultat); // echo &resultat=66
?>
Il existe également une méthode send (qui permet d'ouvrir le fichier PHP dans une nouvelle fenêtre pour afficher un résultat) et une méthode load.
Voilà, j'espère que c'est clair !
@+
/!\ EDIT : je vois que la coloration syntaxique de l'actionscript m'a rajouté un <strong></strong> inutile : ce n'est pas dans le code !