Comment récupérer deux valeurs dans une balise XML

Résolu
AOE_angelofdarkness Messages postés 53 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 14 décembre 2010 - 1 janv. 2010 à 15:39
AOE_angelofdarkness Messages postés 53 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 14 décembre 2010 - 8 janv. 2010 à 19:01
Bonjour et bonne annééééeee :)

Aujourd'hui mon tit soucis est le suivant :
Je travaille actuellement avec des clips dans flash qui vont récupérer l'url d'une image dans une balise xml.
code dans flash : loadMovie (monXML.firstChild.childNodes[1].firstChild,"cible2");
code xml : <cible2>urlimage1</cible2> (ceci fonctionne parfaitement)

Mon problème est que parfois, il est possible que deux images interviennent dans le clip cible au même moment : ex : <cible2>urlimage1urlimage2</cible2>

Comment puis-je associer les deux valeurs de urlimage1 et urlimage2 de façon à ce que flash affiche les deux images dans le même clip ?

Je précise quand même que je ne peux pas créer de nouvelle balises puisque d'autre balises suivent et ne peuvent pas souffrir d'un décalage avec la méthode de nœuds :p

Merci beaucoup :)

32 réponses

Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
7 janv. 2010 à 10:25
Alors après verification par moi-meme et par le web,
Si tu fais un loadMovie dans un clip puis refait un loadMovie dans ce meme clip, alors le contenu précèdent sera remplacé.

La seule solution : Créer des clip pour chaque images.

Ex:
var urlsStr:String;
var arrUrls:Array = new Array(); 

var monXML:XML = new XML ();
monXML.ignoreWhite = true;
monXML.load("toto.xml");

monXML.onLoad = function(ok){
if(ok){
urlsStr = (monXML.firstChild.firstChild.firstChild).toString();
arrUrls = urlsStr.split(";"); 

for(var i=0; i<arrUrls.length; i++)
{
cible.createEmptyMovieClip("clipcible"+i, i);
cible["clipcible"+i].loadMovie(arrUrls[i]);
}	
}
}


A+

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
3
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
1 janv. 2010 à 18:31
Hello,

Tu pourrais separer les urls dans la balise XML par un separateur du genre ";" et ainsi dans flash tu fait un split de ta string et affiche une image pour chaque parti splité.

A+


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
AOE_angelofdarkness Messages postés 53 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 14 décembre 2010
4 janv. 2010 à 07:43
Salut :)

Tout d'abord merci pour ta réponse :)
Effectivement je n'y avais pas pensé. Côté php ca ne pose pas de problème c'est assez simple, par contre pourrais-tu me donner un peu plus d'explication quant au split de la string niveau AS ? Ce serait évidemment plus pratique et moins lourd d'afficher plusieurs images dans un clip que de dupliquer ou créer un clip pour chaque.
Si tu as un petit exemple simple sous le coude, je ne suis pas contre :p

Merci encore ^^
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
4 janv. 2010 à 09:46
Petite recherche google "split flash as3"

a+

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0

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

Posez votre question
AOE_angelofdarkness Messages postés 53 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 14 décembre 2010
5 janv. 2010 à 12:21
Hello ^^

Bon j'ai fait ma tite recherche google, je pensais pas que split était une méthode :p

J'avoue que j'ai pas tout saisi ^^; Bon j'ai compris qu'il s'agissait d'une récupération et d'une organisation en tableau, par contre :
J'ai un xml qui se load, une fois loadé, je distribue les nodes sur des clips, jusque là rien d'anormal. Ma question est la suivante, est-ce que je peux faire apparaître 2 images (url contenues dans les nodes) dans un même clip cible de façon à ce que les deux images se superposent ? Ca allégerait grandement le chargement du swf parce que mes clips sont relativement nombreux.

Merci :)
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
5 janv. 2010 à 12:43
Oui avec un split :)

Ex :

... (Chargement XML )
// recuperation du node des url dans une variable
var urlsStr:String = monXML.cible2; // output : url-img-1;url-img-2 

// Split de la String
var arrUrls = urlsStr.split(";")); // sachant que chaque url est separé par un ";" dans le node

// Ensuite tu as acces a chaque url et tu en fais ce que tu veux
arrUrls // url-img-1
arrUrls // url-img-2


A+

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
5 janv. 2010 à 12:44
Edit :

arrUrls[0] // output : url-img-1
arrUrls[1] // output : url-img-2


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
AOE_angelofdarkness Messages postés 53 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 14 décembre 2010
5 janv. 2010 à 13:39
merci merci beaucoup ^^

Bon j'ai testé et forcement... j'ai du mal :p

donc niveau de mon code en xml j'ai fait au plus simple :
<?xml version="1.0" encoding="utf-8"?>
<toto>
<titi>images1.png;images2.png;</titi>
<toto>
_____________________

AS : image 1
monXML = new XML ();
monXML.ignoreWhite = true;
monXML.load("toto.xml");

Image 20etquelques
var urlsStr:String = monXML.firstChild.firstChild.firstChild;
var arrUrls = urlsStr.split(";");
loadMovie (arrUrls[0],"cible");
stop();
_____________

Avec un : loadMovie (monXML.firstChild.firstChild.firstChild,"cible");
Ca fonctionne et j'ai bien mon image 1.

Mais avec ce que je t'ai présenté au dessus, j'ai le droit à une erreur d'ouverture de l'URL 'undefined

Tu as une idée de ce qui ne fonctionne pas ? :o

Merci encore ^^
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
5 janv. 2010 à 15:38
Si tu fais un trace(arrUrls[0]);

sa te donne quoi ?


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
AOE_angelofdarkness Messages postés 53 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 14 décembre 2010
5 janv. 2010 à 15:43
Si je fais un : trace(arrUrls[0]);
Ca me donne "undefined"

Si je trace :
trace (monXML.firstChild.firstChild.firstChild);
Ca me donne l'url de mes images1 et 2 soit dossier/image1.png;dossier/image2.png
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
5 janv. 2010 à 16:03
Arf, var urlsStr:String n'est pas suffisant pour definir le node xml en tant que string.

Change comme ceci :

var urlsStr:String = (monXML.firstChild.firstChild.firstChild).toString();


Là çà devrait marcher :)

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
AOE_angelofdarkness Messages postés 53 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 14 décembre 2010
5 janv. 2010 à 16:09
Super ca marche :) Tu es un dieu ! (j'en fais trop ? :p)

Maintenant me reste plus qu'à comprendre comment faire pour avoir 2 images dans le même clip et du coup si possible réduire le nombre de mes clips par 3 :p
Si tu as d'autres conseils en la matière, je suis évidement preneur :)

En tout cas merci pour tous tes conseils et ton aide :)
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
5 janv. 2010 à 16:16
for(i=0;i<arrUrls.length;i++)
{
     loadMovie(arrUrls[i],"cible");
}


De rien :-)


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
AOE_angelofdarkness Messages postés 53 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 14 décembre 2010
5 janv. 2010 à 16:31
Hé hé, fallait bien que ça se complique sinon c'est pas drole ^^;
Ca marche poa... (pardon de t'embêter encore)

Les splits sont bien dissocier quand je les traces j'ai la bonne valeur, par contre rien ne s'affiche...
quand je trace (arrUrls[i]); j'ai undefined (c'est peut-être normal mais je comprends pas encore tout :p)

Tu pourrais m'expliquer le code que je comprenne, j'aime pas ne pas comprendre à fond les trucs et ca m'évitera (peut-être) de redemander une prochaine fois ^^;
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
5 janv. 2010 à 16:38
... (Chargement XML )

// recuperation du node des url dans une variable et transformation en String
var urlsStr:String = (monXML.firstChild.firstChild.firstChild).toString();

// Split et recuperation des differentes urls de la string dans un tableau 
var arrUrls = urlsStr.split(";"); // sachant que chaque url est separé par un ";" dans le node

// Boucle permettant le chargement de toutes les images du tableau arrUrls
for(i=0;i<arrUrls.length;i++)
{
     loadMovie(arrUrls[i],"cible");
}



-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
AOE_angelofdarkness Messages postés 53 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 14 décembre 2010
5 janv. 2010 à 17:17
Décidément... ca veut pas...
J'ai regardé les propriété de String.length et apparement pas de problème... j'ai tenté de mettre for (var i=0; ou encore for (var i = Number = 0... bref un peu tout y'a rien qui passe...
toujours rien à l'affichage... à contrario arrUrls[0] ou arrUrls[1], passent bien indépendamment...
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
5 janv. 2010 à 17:26
for(i=0;i<arrUrls.length;i++)
{
     trace(arrUrls[i]);
}


Tu as quoi qui s'affiche ?

-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
AOE_angelofdarkness Messages postés 53 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 14 décembre 2010
5 janv. 2010 à 17:29
j'ai mes deux urls d'images séparées l'une en dessous de l'autre... O.O
0
Orange73 Messages postés 1375 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 2 août 2011
5 janv. 2010 à 17:34
Donc sa marche.

remplace le trace() par un loadMovie()


-- Orange73 --

"L'homme n'est pas fait pour travailler, la preuve c'est que cela le fatigue" (Voltaire)
0
AOE_angelofdarkness Messages postés 53 Date d'inscription mercredi 11 janvier 2006 Statut Membre Dernière intervention 14 décembre 2010
5 janv. 2010 à 17:44
Beh je fais ca :

for(i=0;i<arrUrls.length;i++)
{
loadMovie(arrUrls[i], "cible");
trace(arrUrls[i]);
}

Le trace fonctionne bien, ca récupère bien les 2 urls, par contre rien à l'affichage alors que du fait je devrais avoir mes deux images...
0
Rejoignez-nous