Recup flasvars PHP to flash

Signaler
Messages postés
79
Date d'inscription
mercredi 1 août 2007
Statut
Membre
Dernière intervention
27 juillet 2011
-
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
-
Bonjour

Après de nombreuses recherches infructueuses, je me dirige vers vous pour "essayer" de trouver une solution.

Je récupère à partir d'un fichier PHP plusieurs flashvar

    loadVariablesNum("http://blablabla.net/test_jeu.php", 0, "POST"); 
    var id_user = "id_user"; 
    var id_jeu = "id_jeu"; 
    var level = "level"; 
    var site_url = "site_url"; 
    var flashdir = "flashdir"; 


Grâce aux variables ci-dessus et à des champs dynamiques je vérifie bien que je récupère les flashvars de mon PHP.

Je souhaite par la suite me servir de la var flashdir qui est: /_fichiers/flash/jeux, pour pouvoir charger un fichier xml qui se trouve dans le fichier défini par flashdir. J'utilise le code suivant

   
   var file2load = flashdir+"/tigres_a_relier.xml"; 
   xml.load(file2load); 


"flashdir+" ne semble pas être pris en compte car si je crée une var file2load elle m'affiche: flashdir/tigres_a_relier.xml
et logiquement le fichier xml n'est pas chargé.

J'ai aussi essayé:

   var file2load = _root.flashdir+"/tigres_a_relier.xml";  
   xml.load(file2load); 


Que dois-je faire et surtout où est l'erreur?????

J'espère avoir été assez clair et vous remercie par avance.

3 réponses

Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Bonjour,

le chargement via loadvarnum est asynchrone, ce qui veut dire que ton code continue a s'éxécuter alors que tes variables ne sont pas encore chargées depuis php.
Il est alors normal que file2load te retourne 'flashdir/tigres...', la variable flashdir n'a pas encore recu son affectation depuis php.

Pour contourner ce probleme, tu devrais passer par un loadVars (loadVars.load() )qui va générer un evénement lorsque le chargement des variables est terminé et alors tu peux définir de façon juste flashdir et lancer le chargement de ton xml

@+
Messages postés
79
Date d'inscription
mercredi 1 août 2007
Statut
Membre
Dernière intervention
27 juillet 2011

Salut Girou,
Merci pour avoir pris le temps de me répondre.

J'ai donc changé par ces lignes:

var recup_php:LoadVars = new LoadVars();
recup_php.onLoad = function(success:Boolean) {
    if (success) {
        trace(this.toString());
    } else {
        trace("Erreur chargement LoadVars");
    }
};
recup_php.load("http://clubpanda.kaliop.net/test_jeu.php");
recup_php.onLoad();


En sortie je tombe sur ça:

Erreur chargement LoadVars
nothing=%22%3E%3C%2Fembed%3E%0A%09%3C%2Fobject%3E%0A%0A%3C%2Fbody%3E%0A%3C%2Fhtml%3E%0A&level=0&id%5Fjeu=2&id%5Fuser=1&flashdir=%2F%5Ffichiers%2Fflash%2Fjeux&site%5Furl=http%3A%2F%2Fclubpanda%2Ekaliop%2Enet%2F&amp%3Bnothing=%0A%0A%09%3Cdiv%20id%3D%22jeuflash%22%3Ele%20jeu%3C%2Fdiv%3E%0A%09%09%3Cobject%20classid...etc, etc, etc..........


On distingue bien les flashvar que je souhaiterais récupérer: site_url, flashdir, id_jeu, id_user et level.

J'ai donc collé un
var toto = _root.id_jeu;


dessous

recup_php.onLoad();


et un champs dynamique (var toto) sur ma scène mais il s'affiche en undefined

Un peu plus d'aide serait la bien venue [respect]
Messages postés
1203
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
Salut,

online ton champ dynamique affiche type function ce qui est correcte, this dans onload représente la fonction elle même...

Attention, ton php ne doit qu'envoyer les variables sous la forme &variable=valeur&variable1=valeur1 et ne pas envoyer une page html complete
<? php
echo "&id_user=1&id_jeu=2&&flashdir=/_fichiers/flash/jeux"; ...et ainsi de suite pour les autres variables
?>

ensuite dans le flash pour récupérer tes variables

recup_php.onLoad = function(success:Boolean) {
    if (success) {
        user_id=this.user_id
       flashdir=this.flashdir
      //...
      _root.toto.text="flashdir="+this.flashdir+" user_id="+this.user_id
    } else {
        trace("Erreur chargement LoadVars");
    }
};

@+