Comment récupérer deux valeurs dans une balise XML [Résolu]

Messages postés
53
Date d'inscription
mercredi 11 janvier 2006
Dernière intervention
14 décembre 2010
- 1 janv. 2010 à 15:39 - Dernière réponse :
Messages postés
53
Date d'inscription
mercredi 11 janvier 2006
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 :)
Afficher la suite 

Votre réponse

32 réponses

Meilleure réponse
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Dernière intervention
2 août 2011
- 7 janv. 2010 à 10:25
3
Merci
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)

Merci Orange73 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de Orange73
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Dernière intervention
2 août 2011
- 1 janv. 2010 à 18:31
0
Merci
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)
Commenter la réponse de Orange73
Messages postés
53
Date d'inscription
mercredi 11 janvier 2006
Dernière intervention
14 décembre 2010
- 4 janv. 2010 à 07:43
0
Merci
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 ^^
Commenter la réponse de AOE_angelofdarkness
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Dernière intervention
2 août 2011
- 4 janv. 2010 à 09:46
0
Merci
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)
Commenter la réponse de Orange73
Messages postés
53
Date d'inscription
mercredi 11 janvier 2006
Dernière intervention
14 décembre 2010
- 5 janv. 2010 à 12:21
0
Merci
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 :)
Commenter la réponse de AOE_angelofdarkness
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Dernière intervention
2 août 2011
- 5 janv. 2010 à 12:43
0
Merci
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)
Commenter la réponse de Orange73
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Dernière intervention
2 août 2011
- 5 janv. 2010 à 12:44
0
Merci
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)
Commenter la réponse de Orange73
Messages postés
53
Date d'inscription
mercredi 11 janvier 2006
Dernière intervention
14 décembre 2010
- 5 janv. 2010 à 13:39
0
Merci
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 ^^
Commenter la réponse de AOE_angelofdarkness
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Dernière intervention
2 août 2011
- 5 janv. 2010 à 15:38
0
Merci
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)
Commenter la réponse de Orange73
Messages postés
53
Date d'inscription
mercredi 11 janvier 2006
Dernière intervention
14 décembre 2010
- 5 janv. 2010 à 15:43
0
Merci
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
Commenter la réponse de AOE_angelofdarkness
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Dernière intervention
2 août 2011
- 5 janv. 2010 à 16:03
0
Merci
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)
Commenter la réponse de Orange73
Messages postés
53
Date d'inscription
mercredi 11 janvier 2006
Dernière intervention
14 décembre 2010
- 5 janv. 2010 à 16:09
0
Merci
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 :)
Commenter la réponse de AOE_angelofdarkness
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Dernière intervention
2 août 2011
- 5 janv. 2010 à 16:16
0
Merci
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)
Commenter la réponse de Orange73
Messages postés
53
Date d'inscription
mercredi 11 janvier 2006
Dernière intervention
14 décembre 2010
- 5 janv. 2010 à 16:31
0
Merci
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 ^^;
Commenter la réponse de AOE_angelofdarkness
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Dernière intervention
2 août 2011
- 5 janv. 2010 à 16:38
0
Merci
... (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)
Commenter la réponse de Orange73
Messages postés
53
Date d'inscription
mercredi 11 janvier 2006
Dernière intervention
14 décembre 2010
- 5 janv. 2010 à 17:17
0
Merci
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...
Commenter la réponse de AOE_angelofdarkness
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Dernière intervention
2 août 2011
- 5 janv. 2010 à 17:26
0
Merci
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)
Commenter la réponse de Orange73
Messages postés
53
Date d'inscription
mercredi 11 janvier 2006
Dernière intervention
14 décembre 2010
- 5 janv. 2010 à 17:29
0
Merci
j'ai mes deux urls d'images séparées l'une en dessous de l'autre... O.O
Commenter la réponse de AOE_angelofdarkness
Messages postés
1393
Date d'inscription
dimanche 28 novembre 2004
Dernière intervention
2 août 2011
- 5 janv. 2010 à 17:34
0
Merci
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)
Commenter la réponse de Orange73
Messages postés
53
Date d'inscription
mercredi 11 janvier 2006
Dernière intervention
14 décembre 2010
- 5 janv. 2010 à 17:44
0
Merci
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...
Commenter la réponse de AOE_angelofdarkness

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.