Problème Xml et variables

Messages postés
19
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
19 mai 2009
- - Dernière réponse : kemavin
Messages postés
19
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
19 mai 2009
- 19 mai 2009 à 15:10
Bonjour,
j'ai un problème avec une animation flash qui doit placer des bulles, quand je clique sur un bouton, sur une carte à partir de coordonnées se trouvant dans mon fichier xml.Voici mon code en AS2:

var drapeau=this.attachMovie("drapeau","drapeau",5);
drapeau._visible=0;
Fichier_XML = new XML();
Fichier_XML.ignoreWhite = true;
Fichier_XML.load("exposant.xml");
Fichier_XML.onLoad = function(Reussite) {
if (Reussite) {
x = Fichier_XML.firstChild;
for(i = 0; x.childNodes[0].childNodes[i] != undefined; i++) {
Voir_xml += "Coord_x: " + x.childNodes[0].childNodes[i].childNodes[0].firstChild + "\n";
Voir_xml += "Coord_y: " + x.childNodes[0].childNodes[i].childNodes[1].firstChild + "\n";
Voir_xml += "Titre: " + x.childNodes[0].childNodes[i].childNodes[2].firstChild + "\n";
Voir_xml += "Texte: " + x.childNodes[0].childNodes[i].childNodes[3].firstChild + "\n";
Voir_xml += "Url: " + x.childNodes[0].childNodes[i].childNodes[4].firstChild + "\n";

var drapox=x.childNodes[0].childNodes[i].childNodes[0].firstChild;
var drapoy=x.childNodes[0].childNodes[i].childNodes[1].firstChild;
trace(drapox);
trace(drapoy);
btn.onPress=function(){
drapeau._visible=1;
drapeau._x=drapox;
drapeau._y=drapoy;
texte +=x.childNodes[0].childNodes[0].childNodes[2].firstChild + "\n";
texte +=x.childNodes[0].childNodes[0].childNodes[3].firstChild + "\n";
trace (drapeau._x);
trace (drapeau._y);
}
}
}
else { Voir_xml = "Erreur lors du chargement du fichier XML"; }
};

Lorsque je fais un trace de drapox et drapoy, je récupère bien les bonnes coordonnées mais quand j'essaye de l'appliquer à ma bulle, cela me renvoi 0.
D'avance merci
Afficher la suite 

8 réponses

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

via XML tu récupère des chaines de caractères (String), MovieClip._x attend un nombre (Number). Il est possible que la confusion vienne de là.

Essaye en changeant ton script comme ceci :

drapeau._x=Number(drapox);

drapeau._y=Number(drapoy);

@+
Commenter la réponse de cs_Girou
Messages postés
19
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
19 mai 2009
0
Merci
Cela ne change rien, il me renvoi toujours 0 pour les deux!
Commenter la réponse de kemavin
Messages postés
1204
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
23 juillet 2009
2
0
Merci
Salut,

en regardant le script de plus pres, je constate que a chaque itération de ta boucle (i) tu redéfinis la fonction btn.onPress
Je ne vois pas l'utilité de cela, car au final seul la dernière itération de i sera celle prise en ompte par ta fonction btn.onPress

Si tu fais

btn.onPress=function(){

trace(drapox);


trace(drapoy);

sans doute que cela va te retourner 0 et 0

@+
Commenter la réponse de cs_Girou
Messages postés
19
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
19 mai 2009
0
Merci
Lorsque je fais le trace comme tu l'as indiqué, il me retourne les bonnes valeurs, celles présentes dans mon xml et non 0 et 0.
Commenter la réponse de kemavin
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
2 août 2011
0
Merci
Hello,

le probleme vient de ta fonction onPress... tu fais sa a l'interieur :

texte +=x.childNodes[0].childNodes[0].childNodes[2].firstChild + "\n";

Hors, dans flash, tu perds l'iteration de ta boucle for  si tu l'integre dans la fonction onPress.

Il faut donc procéder autrement, et donc declarer des variable en dehors de ta fonction qui recupere les datas comme tu l'as fais pour drapox et drapoy.

-- Orange73 --
"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
Commenter la réponse de Orange73
Messages postés
19
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
19 mai 2009
0
Merci
Je ne comprends pas vraiment ce que tu veux dire! Je déclare bien mes variables drapox et drapoy en dehors de mon Onpress, quand je fais un trace de mes variables dans le Onpress, il me renvoi les bonnes valeurs de celles-ci mais quand je les applique à drapeau_x et drapeau_y, cela me donne 0 et 0. Que faudrait-il faire? Je met mon code AS pour te montrer:

for(i = 0; x.childNodes[0].childNodes[i] != undefined; i++) {
Voir_xml += "Coord_x: " + x.childNodes[0].childNodes[i].childNodes[0].firstChild + "\n";
Voir_xml += "Coord_y: " + x.childNodes[0].childNodes[i].childNodes[1].firstChild + "\n";
Voir_xml += "Titre: " + x.childNodes[0].childNodes[i].childNodes[2].firstChild + "\n";
Voir_xml += "Texte: " + x.childNodes[0].childNodes[i].childNodes[3].firstChild + "\n";
Voir_xml += "Url: " + x.childNodes[0].childNodes[i].childNodes[4].firstChild + "\n";
}
var drapox=x.childNodes[0].childNodes[0].childNodes[0].firstChild;
var drapoy=x.childNodes[0].childNodes[0].childNodes[1].firstChild;
btn.onPress=function(){
drapeau._visible=1;
drapeau._x = Number(drapox);
drapeau._y = Number(drapoy);
trace(drapox);
trace(drapoy);
trace (drapeau._x);
trace (drapeau._y);
/*texte +=x.childNodes[0].childNodes[0].childNodes[2].firstChild + "\n";
texte +=x.childNodes[0].childNodes[0].childNodes[3].firstChild + "\n";*/
}

Merci de votre aide.
Commenter la réponse de kemavin
Messages postés
19
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
19 mai 2009
0
Merci
Personne n'a d'idées?
Commenter la réponse de kemavin
Messages postés
19
Date d'inscription
jeudi 22 janvier 2009
Statut
Membre
Dernière intervention
19 mai 2009
0
Merci
Salut,
j'ai trouvé une solution à mon problème. Je voulais savoir autre chose à présent. Mon flash récupère bien les coordonnées de mon xml et met mes points à la bonne place! Lorsque je survol ces points, j'ai une bulle qui apparaît(elle est placée dans mon bouton). J'aimerais avoir une boucle pour récupérer toutes les informations dans mon xml et afficher pour chaque boutons le texte correspondant!Comment faut-il que je m'y prenne? Je met mon code ci-dessous:

XML:
<?xml version="1.0" encoding="UTF-8"?>
<listee_exposant>
<coordonee PosX="100" PosY= "100">
<titre>Euroforest</titre>
<exposant>john Deer</exposant>
www.google.fr
<vignette>vignette_01.jpg</vignette>
</coordonee>

<coordonee PosX ="200" PosY= "200">
<titre>Euroforest</titre>
<exposant>AMR</exposant>
www.google.fr
<vignette>vignette_01.jpg</vignette>
</coordonee>

<coordonee PosX ="300" PosY= "300">
<titre>Euroforest</titre>
<exposant>FMA</exposant>
www.google.fr
<vignette>vignette_01.jpg</vignette>
</coordonee>

<coordonee PosX ="400" PosY= "400">
<titre>Euroforest</titre>
<exposant>Ponse</exposant>
www.google.fr
<vignette>vignette_01.jpg</vignette>
</coordonee>

</liste_exposant>

AS:
var xml:XML = new XML();
zone = this.createEmptyMovieClip("zone", this.getNextHighestDepth())
xml.ignoreWhite = true;
xml.onLoad = function() {
for(var i=0; i< xml.firstChild.childNodes.length; i++){
node = xml.firstChild.childNodes[i]
btn = zone.attachMovie("btn","btn-"+i,zone.getNextHighestDepth())
btn._x = node.attributes.PosX
btn._y = node.attributes.PosY
texte += xml.firstChild.childNodes[i].childNodes[i].firstChild + "\n";
texte._x = node.attributes.PosX-30
texte._y = node.attributes.PosY-57.1
}
}
xml.load("exposant.xml");
onEnterFrame = function () {
p = Math.round(100*xml.getBytesLoaded()/xml.getBytesTotal())
pct_xml.text = p+"% chargés";
if(xml.getBytesLoaded()>=xml.getBytesTotal())delete onEnterFrame ;
}



Ici ma variable "texte" est un champ texte dynamique!Quand je fais cela, je ne récupère que le texte du premier nœud du xml!Comment faire pour tous les récupérer et qu'il s'affiche au même endroit que mes boutons!?Merci de vos réponses
Commenter la réponse de kemavin