Problème Xml et variables

kemavin Messages postés 19 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 19 mai 2009 - 14 mai 2009 à 16:32
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

8 réponses

cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
15 mai 2009 à 09:18
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);

@+
0
kemavin Messages postés 19 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 19 mai 2009
15 mai 2009 à 09:50
Cela ne change rien, il me renvoi toujours 0 pour les deux!
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
15 mai 2009 à 10:37
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

@+
0
kemavin Messages postés 19 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 19 mai 2009
15 mai 2009 à 10:45
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
15 mai 2009 à 16:38
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)
0
kemavin Messages postés 19 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 19 mai 2009
18 mai 2009 à 09:25
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.
0
kemavin Messages postés 19 Date d'inscription jeudi 22 janvier 2009 Statut Membre Dernière intervention 19 mai 2009
19 mai 2009 à 10:39
Personne n'a d'idées?
0
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
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
0
Rejoignez-nous