IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 1 & ActionScript 2 Discussion :

[AS2] Chargement d'un fichier XML


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Par défaut [AS2] Chargement d'un fichier XML
    Bonjour à tous!

    Je vous expose mon problème : je travaille sur un jeu combinant php et flash, j'utilise xml pour transmettre les variables de php vers flash. Grace à php, je génère un fichier xml, donc j'envoie le nom à flash par la méthode classique. Je charge ensuite le fichier XML dans flash et je peux ainsi lire toutes mes variables. Problème : le fichier ne se charge pas! Les fichiers XML sont stockés dans un dossierséparé, et je ne parviens pas à dire à flash comment aller le récuperer... Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var Fichier_XML:XML = new XML(); 
    Fichier_XML.ignoreWhite = true; 
    var nom_fichier_xml:String = "/XML/" + IDcombat + ".xml"; 
    Fichier_XML.load(nom_fichier_xml);

    IDcombat est la variable envoyée par php contenant le nom du fichier XML.

    J'ai déjà essayé de mettre l'url complète de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var Fichier_XML:XML = new XML(); 
    Fichier_XML.ignoreWhite = true; 
    var nom_fichier_xml:String = "http://monsite.com/game/XML/" + IDcombat + ".xml"; 
    Fichier_XML.load(nom_fichier_xml);
    Je suupose que cela est du au fait que mon fichier XML se trouve dans un répertoire séparé, mais vu la quantité de fichiers qui seront generés, je peux difficilement faire autrement sans mettre un bazar monstrueux sur mon serveur...Quelqu'un a un conseil? une aide? une solution?

    Merci d'avance!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 37
    Par défaut
    Je pense que tu regarde pas au bon endroit,

    Si ta fenetre de sortie flash de te dit pas qu'il pas trouver le php c'est qu'il l'a trouvé...

    Essai de mettre une fausse url tu verra le message d'erreur dont je parle.

    Il faut voir comment tu utilises ton objet xml par la suite ça viens peut être de la...

    2 erreurs possibles :
    Le php n'est pas bon (erreur php ou bien mauvaise syntaxe xml)
    Le flash n'est pas bon (il faut contrôler le chargement du xml avant de l'utiliser avec onload, il faudrai voir la suite de ton script)...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Par défaut
    Merci pour ta réponse!

    Voici la suite de mon script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    var Fichier_XML:XML = new XML();
    Fichier_XML.ignoreWhite = true;
    var nom_fichier_xml:String = "/XML/" + IDcombat + ".xml";
    Fichier_XML.load(nom_fichier_xml);
     
    Fichier_XML.onLoad = function(succes) { 
    	if (succes) { 
     
     
    		var p1_nom:String = Fichier_XML.firstChild.childNodes[0];
    		var p1_lv:Number = Fichier_XML.firstChild.childNodes[0].firstChild;
    		var p1_hp:Number = Fichier_XML.firstChild.childNodes[1].firstChild;
    		var p1_mp:Number = Fichier_XML.firstChild.childNodes[2].firstChild;
    		var p1_hpmax:Number = Fichier_XML.firstChild.childNodes[3].firstChild;
    		var p1_mpmax:Number = Fichier_XML.firstChild.childNodes[4].firstChild;
    		var p1_aphymin:Number = Fichier_XML.firstChild.childNodes[5].firstChild;
    		var p1_aphymax:Number = Fichier_XML.firstChild.childNodes[6].firstChild;
    		var p1_amag:Number = Fichier_XML.firstChild.childNodes[7].firstChild;
    		var p1_dphy:Number = Fichier_XML.firstChild.childNodes[8].firstChild;
    		var p1_dmag:Number = Fichier_XML.firstChild.childNodes[9].firstChild;
    		var p1_vit:Number = Fichier_XML.firstChild.childNodes[10].firstChild;
    		var p1_cri:Number = Fichier_XML.firstChild.childNodes[11].firstChild;
    		var p1_esq:Number = Fichier_XML.firstChild.childNodes[12].firstChild;
    		var p1_xp:Number = Fichier_XML.firstChild.childNodes[13].firstChild;
    		var p1_xpnext:Number = Fichier_XML.firstChild.childNodes[14].firstChild;
    	}
    }
    Dans cette configuration, il ne se passe rien : mes champs texte dans mon animation flash ne prennent pas les variables et gardent le texte de base pré entré. Par contre, si je supprime le bloc

    Fichier_XML.onLoad = function(succes) {
    if (succes) {

    cette fois, mes champs texte m'affichent tous un superbe "undefined" à la place de mes variables... Partant de là, j'ai donc supposé que la condition succes ne se réalisait pas et donc que le fichier ne se chargeait pas correctement... Le contenu des fichiers XML est bon, je l'ai vérifié à plusieurs reprises. Mais pas moyen de voir où est la faille... Où me suis-je planté?

  4. #4
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Bonjour,

    pour trouver d'où vient le problème il faudrait vérifier que le chemin vers le fichier XML est bon puis tracer les valeurs des différentes variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    var Fichier_XML:XML = new XML();
    Fichier_XML.ignoreWhite = true;
    var nom_fichier_xml:String = "/XML/" + IDcombat + ".xml";
     
    Fichier_XML.onLoad = function(succes) { 
        if (succes)
        {
            trace("Chargement OK");
     
            trace(Fichier_XML.firstChild.childNodes);
        }else{
            trace("Erreur lors du chargement");
        }
    }
    trace("Chargement du fichier : " + nom_fichier_xml);
    Fichier_XML.load(nom_fichier_xml);
    la façon dont tu récupères les données de ton fichier XML n'est pas très bonne, on pourrait voir ton XML pour dire si ça vient du format ou du parsing ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Par défaut
    Avec le code que tu me suggère, j'obtiens la réponse suivante :

    Chargement du fichier : XML/14-542061201.xml
    Chargement du fichier : XML/14-542061201.xml
    Chargement OK
    undefined
    Chargement OK
    <Nix><p1_lv>1</p1_lv><p1_hp>100</p1_hp><p1_mp>40</p1_mp><p1_hpmax>100</p1_hpmax><p1_mpmax>40</p1_mpmax><p1_aphymin>5</p1_aphymin><p1_aphymax>7</p1_aphymax><p1_amag>2.4</p1_amag><p1_dphy>6</p1_dphy><p1_dmag>1.6</p1_dmag><p1_vit>1.5</p1_vit><p1_cri>5.09</p1_cri><p1_esq>2.06</p1_esq><p1_xp>25</p1_xp><p1_xpnext>50</p1_xpnext></Nix>


    Etrange, je ne parviens pas à comprendre d'où vient ce "undefined"... Et il semble en effet qu'il y ait des erreurs dans ma récupération des variables. Je vous cache pas que c'est un peu la découverte pour moi tout ça, j'ai dû choisir cette méthose parce qu'elle était la plus sécurisée et la plus simple, mais comme vous le voyez je patauge un peu... J'en profite pour vous remercier pour votre aide qui m'est précieuse ^^

    J'ajoute le contenu de mon fichier XML pour l'info

    <?xml version="1.0" encoding="UTF-8"?>
    <personnages>
    <Nix>
    <p1_lv>1</p1_lv>
    <p1_hp>100</p1_hp>
    <p1_mp>40</p1_mp>
    <p1_hpmax>100</p1_hpmax>
    <p1_mpmax>40</p1_mpmax>
    <p1_aphymin>5</p1_aphymin>
    <p1_aphymax>7</p1_aphymax>
    <p1_amag>2.4</p1_amag>
    <p1_dphy>6</p1_dphy>
    <p1_dmag>1.6</p1_dmag>
    <p1_vit>1.5</p1_vit>
    <p1_cri>5.09</p1_cri>
    <p1_esq>2.06</p1_esq>
    <p1_xp>25</p1_xp>
    <p1_xpnext>50</p1_xpnext>
    </Nix>
    </personnages>


    Les variables que je récupère sont donc le nom (ici Nix), puis chacune des caracteristiques du personnage contenues dans les balises suivantes. J'ai choisi ce type d'arborescence pour pouvoir ensuite gerer plusieurs personnages dans le meme fichier (mode multijoueurs). Merci d'avance!

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Par défaut
    Re bonjour à tous!

    Bien que la situation ait évolué, je ne suis pas parvenu à résoudre mon problème. Le fichier XML se charge, ça OK. Je parviens à récuperer les variables. Cependant, je ne parviens pas à les typer correctement. En effet, la récuperation des variables fonctionne (voir code ci dessous)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    p1_nom = Fichier_XML.firstChild.childNodes[0].childNodes[0].firstChild;
    p1_lv = Fichier_XML.firstChild.childNodes[0].childNodes[1].firstChild;
    p1_hp = Fichier_XML.firstChild.childNodes[0].childNodes[2].firstChild;
    p1_mp = Fichier_XML.firstChild.childNodes[0].childNodes[3].firstChild;
    p1_hpmax = Fichier_XML.firstChild.childNodes[0].childNodes[4].firstChild;
    p1_mpmax = Fichier_XML.firstChild.childNodes[0].childNodes[5].firstChild;
    p1_aphymin = Fichier_XML.firstChild.childNodes[0].childNodes[6].firstChild;
    p1_aphymax = Fichier_XML.firstChild.childNodes[0].childNodes[7].firstChild;
    p1_amag = Fichier_XML.firstChild.childNodes[0].childNodes[8].firstChild;
    p1_dphy = Fichier_XML.firstChild.childNodes[0].childNodes[9].firstChild;
    p1_dmag = Fichier_XML.firstChild.childNodes[0].childNodes[10].firstChild;
    p1_vit = Fichier_XML.firstChild.childNodes[0].childNodes[11].firstChild;
    p1_cri = Fichier_XML.firstChild.childNodes[0].childNodes[12].firstChild;
    p1_esq = Fichier_XML.firstChild.childNodes[0].childNodes[13].firstChild;
    p1_xp = Fichier_XML.firstChild.childNodes[0].childNodes[14].firstChild;
    p1_xpnext = Fichier_XML.firstChild.childNodes[0].childNodes[15].firstChild;

    Cependant j'ai l'impression que flash considère toutes mes variables comme des String (par exemple, lorsque mon personnage attaque, il infilige des dégats de "NaN" ==> Not a Nuber). Le problème, c'est que si je type mes variables de cette manière :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    var p1_nom:String = Fichier_XML.firstChild.childNodes[0].childNodes[0];
    var p1_lv:Number = Fichier_XML.firstChild.childNodes[0].childNodes[0].firstChild;
    var p1_hp:Number = Fichier_XML.firstChild.childNodes[0].childNodes[1].firstChild;
    var p1_mp:Number = Fichier_XML.firstChild.childNodes[0].childNodes[2].firstChild;
    var p1_hpmax:Number = Fichier_XML.firstChild.childNodes[0].childNodes[3].firstChild;
    var p1_mpmax:Number = Fichier_XML.firstChild.childNodes[0].childNodes[4].firstChild;
    var p1_aphymin:Number = Fichier_XML.firstChild.childNodes[0].childNodes[5].firstChild;
    var p1_aphymax:Number = Fichier_XML.firstChild.childNodes[0].childNodes[6].firstChild;
    var p1_amag:Number = Fichier_XML.firstChild.childNodes[0].childNodes[7].firstChild;
    var p1_dphy:Number = Fichier_XML.firstChild.childNodes[0].childNodes[8].firstChild;
    var p1_dmag:Number = Fichier_XML.firstChild.childNodes[0].childNodes[9].firstChild;
    var p1_vit:Number = Fichier_XML.firstChild.childNodes[0].childNodes[10].firstChild;
    var p1_cri:Number = Fichier_XML.firstChild.childNodes[0].childNodes[11].firstChild;
    var p1_esq:Number = Fichier_XML.firstChild.childNodes[0].childNodes[12].firstChild;
    var p1_xp:Number = Fichier_XML.firstChild.childNodes[0].childNodes[13].firstChild;
    var p1_xpnext:Number = Fichier_XML.firstChild.childNodes[0].childNodes[14].firstChild;

    les variables ne s'affichent plus dans mes champs texte dynamiques, ce qui je suppose veut dire que flash ne les récupère pas! Je suis totalement dans le flou, quelqu'un saura-t-il m'aider?

    Merci d'avance!

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 37
    Par défaut
    Perso dans ton cas je te conseil d'utilisé les attributs, ex

    XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    <personnages>
    <Nix lv="1" hp="100" mp="40" hpmax="100"  etc="etc..." />
    </personnages>
    flash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    level=Fichier_XML.firstChild.childNodes[i].attributes.lv;
    hp=Fichier_XML.firstChild.childNodes[i].attributes.hp;
    etc=Fichier_XML.firstChild.childNodes[i].attributes.etc;//ETC...

    ensuite pour etre sur qu'il s'agit de chiffre :
    Moi j'aimerai bien savoir si tu affiches directement les variables dans un textefield ou si tu fais des calculs avec ... Je doute fortement que tes NaN provienne d'un probleme d'integration xml. Fraudai que tu montres de quel maniere tu affiches les données.

Discussions similaires

  1. Chargement d'un fichier XML dans un B_LOB
    Par Wise_Sherkaan dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 12/11/2008, 11h00
  2. Réponses: 2
    Dernier message: 18/03/2008, 18h39
  3. Réponses: 2
    Dernier message: 05/03/2007, 14h21
  4. Problème de chargement d'un fichier XML
    Par PANAYE Nicolas dans le forum XMLRAD
    Réponses: 4
    Dernier message: 25/08/2006, 16h17
  5. [DOM XML] Chargement impossible du fichier XML
    Par lietof dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 03/05/2006, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo