_x et _y avec xml

Signaler
Messages postés
11
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
23 janvier 2012
-
Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
-
bonjour à tous pour commencer !

je vai etre bref pour pas trop déranger!

je souhaite positionner un clip en fonction d'un x et y défini dans un fichier xml et malgré mes tests et recherche je ne comprends pas pour quoi celà ne fonctionne pas!


mon xml :

<?xml version="1.0" encoding="UTF-8"?>
<cities>
<city>
<name><![CDATA[blabli]]></name>
<x>250</x>
<y>50</y>
<description>dgdfgdf</description>
</city>

<city>
<name><![CDATA[ghjgjgj]]></name>
<x>150</x>
<y>50</y>
<description>dgdfgdf</description>
</city>
</cities>

mon code as :

myXML = new XML();
myXML.ignoreWhite = true;
myXML.onLoad = function() {
for (var i = 0; i<this.firstChild.childNodes.length; i++) {
profondeur = 100+i;
trace(ok);
}
};
myXML.load("./data.xml"); // on charge le fichier

carte.onEnterFrame = function() {
test._x =myXML.firstChild.childNodes[0].childNodes[1];
test._y =myXML.firstChild.childNodes[0].childNodes[2];
txt= myXML.firstChild.childNodes[0].childNodes[0];}


carte est un clip
test et mon clip auquel je souhaite donner les parametres x et y du xml
txt est un texte dynamique renseigné par le xml

le texte dynamique et bien chargé mais le positionnement du clip ne se fait pas ?

je ne cherche pas forcement à ce qu on me donne la solution mais au moins m'aiguiller

merci d'avance

7 réponses

Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
1
Bonjour,
En premier temps il faut que tu revois les bases sur la création d'un xml (SdZ par exemple: car tu as une grosse erreur à ce niveau). Ensuite je t'invite à jeter un oeil sur des tuto d'acquiqition de données xml.

Enfin je te conseil d'utiliser la méthode "trace" ca permet souvent de trouver l'origine de ses erreurs.

Cordialement
Messages postés
11
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
23 janvier 2012

merci pour les conseils!

ils ont été profitables car j'ai bien avancé,
j'arrive à générer maintenant mes occurences de clip a partir du xml avec les codes suivants :

as

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function(success) {
for(i=0; i<xml.firstChild.childNodes.length;i++){
var boule:MovieClip = _root.attachMovie("boule","b"+i,_root.getNextHighestDepth());
boule._x = xml.firstChild.childNodes[i].childNodes[0].firstChild.nodeValue;
boule._y = xml.firstChild.childNodes[i].childNodes[1].firstChild.nodeValue;}
};
xml.load("monXML.xml");

je voudrai aller plus loin et faire apparaitre au clic de ces occurences générées du texte dans une zone de texte dynamique nommée "info".

j'ai essayer avec la ligne de code suivante mais rien :
boule.onMouseDown = function() {
info.text=xml.firstChild.childNodes[i].childNodes[2].firstChild.nodeValue;
};

pouvez vous de nouveau m'aiguiller?
merci d'avance.
Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
1
Re bonjour.

J'imagine que tu as corriger ta grosse erreur sur ton xml

sinon:

1> nomme directement tes noeuds
fini les ChildNodes ou firstChild,inscrit directement xml.cities[0].name

2> dans ta doucle d'initialisation de boules, il faut:

déterminer a l'exteririeur de la boucle les variables
var xl:int=xml.length();
var boule:MovieClip;
for(i=0;i<xl;i++){
boule:MovieClip= _root.attachMovie("boule","b"+i,_root.getNextHighestDepth());
boule._x = ...
boule._y = ...

et c'est ici que tu va ajouter ta propore propriété a ta boule.
boule.info=...
}

comme cela chaque boule a sa propre info que l'on peut obtenir avec un eventTarget.info
Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
1
oups:

var xl:int=xml.length();
var boule:MovieClip;
for(i=0;i<xl;i++){
boule= _root.attachMovie("boule","b"+i,_root.getNextHighestDepth());
boule._x = ...
boule._y = ...
c'est mieux
Messages postés
11
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
23 janvier 2012

merci encore ! je planche dessus !
Messages postés
11
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
23 janvier 2012

je suis un peu géné à force mais voilà ou j'en suis et rien ne sepasse :

var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function(success) {
for(i=0; i<xml.firstChild.childNodes.length;i++){
var boule:MovieClip = _root.attachMovie("boule","b"+i,_root.getNextHighestDepth());
boule._x = xml.firstChild.childNodes[i].childNodes[0].firstChild.nodeValue;
boule._y = xml.firstChild.childNodes[i].childNodes[1].firstChild.nodeValue;
boule.info=xml.firstChild.childNodes[i].childNodes[2].firstChild.nodeValue;
} };
boule.onMouseDown = function() {
info.text=xml.firstChild.childNodes[i].childNodes[1].firstChild.nodeValue;};

xml.load("monXML.xml");

et rien ne se passe !
Messages postés
465
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
4 mai 2013
1
En fait tu n'as pas compris l'interet d'associer l'info a la boule.

Mon bout de code n'est peut etre pas bon car je ne travaille pas en as2 mais l'idée est de faire:
boule.onMouseDown = function(){info.text=this.info;}

mais au lieu de faire une faire une fonctin anonyme, il serait bien de la nommer et de l'associer à tous instances de boule sur le mousedown.

toutefois je t'invite a passer en as3

Cordialement