begin process at 2010 02 09 17:29:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > TUTORIEL COMPLET XML

TUTORIEL COMPLET XML


 Information sur la source

Note :
9,03 / 10 - par 32 personnes
9,03 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Tutoriaux Niveau :Débutant Date de création :13/10/2003 Vu :38 512

Auteur : BlackWizzard

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (71)
Ajouter un commentaire et/ou une note


 Description

Voici un tutoriel complet sur l'utilisation du xml dans flash.

Source

  • Pour expliquer comment utiliser le xml dans flash, je vais prendre un exemple concret.
  • Nous apprendre a exploiter un fichier xml en prenant comme exemple un systeme de news fictif.
  • Nous ne realiserons que l'exploitation des donnée, pas le systeme lui meme.
  • L'affichage se fera via la fonction trace().
  • Je part sur le principe que vous connaissez les fonctions de base du langage, en particulier les boucles et les bases de la POO.
  • Voici donc le fichier sur lequel nous allons travailler;
  • <?xml version='1.0' encoding='UTF-8' ?>
  • <main>
  • <news>
  • <title value="titre de la news" />
  • <texte>
  • <![CDATA[ blablabla ]]>
  • </texte>
  • <links>
  • <link url="http://www.allboard.net" text="Allboard Network" />
  • <link url="http://www.blackwizzard.com" text="BlackWizzard NetWork" />
  • <link url="http://www.underground-fr.com" text="Underground-fr" />
  • </links>
  • </news>
  • <news>
  • <title value="une 2eme news" />
  • <texte>
  • <![CDATA[ texte de la 2eme news ]]>
  • </texte>
  • <links>
  • <link url="http://www.v-network.info" text="Allboard Network" />
  • </links>
  • </news>
  • </main>
  • Comme vous pouvez le voir, nous devons specifier un header. si il n'y en a pas, flash va quand meme le charger, mais ce header permet de preciser l'encodage.
  • <?xml version='1.0' encoding='UTF-8' ?>
  • les info sont entre <?xml et ?>
  • version='1.0' ne changera pas puisque seul la version 1.0 existe pour l'instant ;)
  • encoding='UTF-8' determine l'encodage du fichier.
  • UTF-8 est le plus utilisé, mais il existe une multitude d'encodages possibles.
  • UTF-8 est le codage 'europeen'. Il est celui utilsé dans les pays utilisant notre alphabet.
  • Il existes d'autres encodage tel que windows-1252, ISO-8859-1, UTF-16 ...
  • Apres le header, nous voyons que les Balises sont mis entre une paire de balise <main></main> que l'on appele balises "root".
  • quelque soit le document xml, Tout le document doit etre encadré ce cette pair de balise.
  • Le nom de cette paire balise n'as pas d'importance.
  • Il y a 2 types de balises;
  • Celles, comme en HTML qui se composent en paire <nom></nom> et celles uniques, qui sont de type <nom />
  • Chaque type de balise ouvrante px accueillir des parametres, exemple, <nom parametre="valeur"></nom> ou <nom parametre="valeur" />.
  • Les balises uniques ne servent uniquement a accueillir des parametres.
  • Pour fournir un texte complet, mettez le entre une paire de balises, mais attention! si votre texte se compose de code html, les balises html seront considérés comme des balises xml, ce qui entrainera souvent une erreur.
  • Pour eviter cela, Vous pouvez placer votre texte entre les pseudo-balises <!CDATA![ et ]]>.
  • exemple:
  • <nom>
  • Voici un texte en gars: <br>
  • <b>blablabla</b>
  • </nom>
  • Si vous faittes comme cela, les balises html vont etre considérées comme du xml, et la syntaxe n'etant pas correct, en particulier pour le <br>, le fichier va retourner une erreur. C'est alors qu'intervient le CDATA:
  • <nom>
  • <![CDATA[
  • Voici un texte en gars: <br>
  • <b>blablabla</b>
  • ]]>
  • </nom>
  • Tout ce qui se trouve dans la balise CDATA ne sera pas interpreté.
  • Maintenant que vous possedez les bases syntaxiques du XML, nous allons commencer le code action-script.
  • Pour exploiter du xml, nous devons declarer un nouvel objet XML:
  • myXML = new XML();
  • Nous voulons que les espaces et sauts de lignes ne soient pas interpretés (ce qui est preferable, sinon ça fout le bordel), pour cela, nous disposont de la propriété ignoreWhite:
  • myXML.ignoreWhite = true;
  • Nous allons maintenant charger le fichier:
  • myXML.load("fichier.xml");
  • Le fichier pouvant mettre plusieurs secondes a se charger en focntion de sa taille et de la conenction, nous allons faire intervenir la fonction onLoad() qui executera son code des que le xml est chargé. Cette fonction recoit un argument de type booleen (1 ou 0; true ou false) qui correpond a l'etat de chargement; true(1) = le document est chargé, false(0) = le document n'est pas chargé, probablement indisponible ou en erreur:
  • myXML.onLoad = function(flag) {
  • if (flag) { // si flag = true
  • // reste du code.
  • }
  • }
  • Maintenant que nous savons composer et charger un document XML, il faut l'analyser.
  • Pour cela, Nous allons parcourir les "branches" du fichier, qui comme tt le monde a du le remarquer se compose comme une arborescence.
  • Pour cela, nous allons utiliser une boucle while(), bien qu'il soit aussi possible de passer par un for().
  • Voici l'arborescence sommaire du fichier :
  • +main
  • -+news
  • ----title (value)
  • ----texte [cdata]
  • ---+links
  • ------link 1 (url, text)
  • ------link 2 (url, text)
  • ------link 3 (url, text)
  • -+news
  • ----title (value)
  • ----texte [cdata]
  • ---+links
  • ------link 1 (url, text)
  • j'espere qu'il est assez clair pour tt le monde.
  • Afin de parcourir le fichier, nous disposons de 2 fonctions principales:
  • xml.firstChild et xml.childNodes[x].
  • xml.firstChild retourne la premiere "branche" du noeud "xml".
  • xml.childNodes[x] retourne le noeud "x" du noeud "xml", sinon il retourne "undefined" si la valeur le noeud "x" n'est pas trouvé.
  • xml.firstChild equivaut donc à xml.childNodes[0].
  • quand le fichier xml est chargé, notre objet XML "myXML" prend comme valeur le contenu du fichier xml.
  • Vous pouvez vous en rendre compte en effectuant un trace(myXML);
  • Donc, afin d'isoler les sections de news, nous pouvons faire trace(myXML.firstChild); qui va nous retourner uniquement les zones de news.
  • Etant donnée que le nombre de news est dynamique, nous allons les afficher une par une, sans savoir a l'avance combien il y en a.
  • Pour cela, nous allons utiliser notre boucle while, xml.childNodes[x] et xml.firstChild.
  • (tout le code qui suis devra se placer a la place de "// reste du code.", dans la fonction onLoad()).
  • //initialisation
  • i=0; // on initialise le compteur.
  • x = myXML.firstChild; // on se place sur le noeud des news.
  • while (x.childNodes[i] != undefined) { // tant qu'il y a des news...
  • trace(x.childNodes[i]); // on affiche le noeud de news trouvé.
  • i++; // on incremente le compteur.
  • }
  • trace(i+" news trouvées"); // on affiche le nombre de news trouvé, c'est pas utile
  • // pour ce tutoriel, mais c'est un plus ;)
  • Voila!
  • Nous avons commencé a parcourir le fichier!
  • Si vous avez compris le bout de code ci-dessus, vous avez tout compris du xml, ou presque.
  • Mais afin de faire un tutoriel complet, je vais aller jusqu'au bout de cette exploration du fichier.
  • Nous avons donc su afficher chaque noeud de news.
  • Nous allons donc explorer chaque news!
  • Pour cela, nous devons nous servir d'une nouvelle fonction: xml.attributes
  • Pour comprendre l'utilité de cette focntion, il faut voir les specificités du xml; En effet, nous avons 2 facons pour stocker du texte:
  • - entre une paire de balise: <nom>texte</nom>
  • - dans une balise: <nom attr="texte" />
  • Pour acceder au premier type (la paire de balise), un simple firstChild suffit.
  • Par contre, pour acceder a la balise elle meme, nous devons utiliser noeud_xml.attributes.nom_attribut
  • Exemple :
  • Pour <link url="http://www.allboard.net" text="Allboard Network" />
  • Pour acceder a la valeur de "url", nous allons faire noeud_xml.attributes.url
  • et pour acceder a la valeur de "texte" noeud_xml.attributes.text
  • Voici donc le code complet qui permet d'explorer le fichier xml.
  • Vous disposez maintenant de toutes les notions necéssaires pour comprendre ce code.
  • i = 0;
  • x = myXML.firstChild;
  • while (x.childNodes[i] != undefined) {
  • trace(""); // ligne vide
  • trace("--- NEWS "+(i+1)+" ---"); // le (i+1) permet d'afficher "NEWS 1" et non pas "NEWS 0",
  • // mais c'est juste une question esthetique.
  • trace("titre:\t"+x.childNodes[i].childNodes[0].attributes.value); // le titre, avec le fameux "attributes"!
  • trace("texte:\t"+x.childNodes[i].childNodes[1].firstChild); // le texte, via un simple firstChild.
  • trace("liens:"); // ha! là on ne sais pas combien il y a de liens par news! ça devient interessant!
  • j = 0; // on initialise j.
  • while (x.childNodes[i].childNodes[2].childNodes[j] != undefined) { // tant qu'il y a des liens...
  • trace("\t --- LIEN "+(j+1)+" ---"); // on affiche le numero de lien...
  • trace("\t lien:\t"+x.childNodes[i].childNodes[2].childNodes[j].attributes.url); // ...son url,
  • trace("\t texte:\t"+x.childNodes[i].childNodes[2].childNodes[j].attributes.text); // son texte...
  • j++; // on incremente le compteur j.
  • }
  • i++;
  • }
  • trace(""); // ligne vide, purement esthetique.
  • trace(i+" news trouvées");
  • Et voila!
  • Vous pouvez desormais vous servir du xml, qui est si pratique avec flash!
  • Un conseil, avant de coder, regardez bien la structure du xml, si elle est complexe, faites le shema simplifié comme on a fait, et distinguez bien les elements statiques (titre, texte toujours au meme nombre et à la meme place) des elements dynamiques (souvent a la meme place, mais rarement au meme nombre).
  • Amusez vous bien!
  • Je resume le code complet ::
  • myXML = new XML();
  • myXML.ignoreWhite = true;
  • myXML.load("file.xml");
  • myXML.onLoad = function(flag) {
  • if (flag) {
  • i = 0;
  • x = myXML.firstChild;
  • while (x.childNodes[i] != undefined) {
  • trace("");
  • trace("--- NEWS "+(i+1)+" ---");
  • trace("titre:\t"+x.childNodes[i].childNodes[0].attributes.value);
  • trace("texte:\t"+x.childNodes[i].childNodes[1].firstChild);
  • trace("liens:");
  • j = 0;
  • while (x.childNodes[i].childNodes[2].childNodes[j] != undefined) {
  • trace("\t --- LIEN "+(j+1)+" ---");
  • trace("\t lien:\t"+x.childNodes[i].childNodes[2].childNodes[j].attributes.url);
  • trace("\t texte:\t"+x.childNodes[i].childNodes[2].childNodes[j].attributes.text);
  • j++;
  • }
  • i++;
  • }
  • trace("");
  • trace(i+" news trouvées");
  • }
  • };
  • Ce tutoriel à été ecrit par BlackWizzard pour Flashkod.
  • Diffusion autorisé a la seul condition de laisser mon pseudo en signature.
Pour expliquer comment utiliser le xml dans flash, je vais prendre un exemple concret.
Nous apprendre a exploiter un fichier xml en prenant comme exemple un systeme de news fictif.
Nous ne realiserons que l'exploitation des donnée, pas le systeme lui meme.
L'affichage se fera via la fonction trace().

Je part sur le principe que vous connaissez les fonctions de base du langage, en particulier les boucles et les bases de la POO.

Voici donc le fichier sur lequel nous allons travailler;

<?xml version='1.0' encoding='UTF-8' ?>
<main>

  <news>
    <title value="titre de la news" />
    <texte>
      <![CDATA[ blablabla ]]>
    </texte>
    <links>
      <link url="http://www.allboard.net" text="Allboard Network" />
      <link url="http://www.blackwizzard.com" text="BlackWizzard NetWork" />
      <link url="http://www.underground-fr.com" text="Underground-fr" />
    </links>
  </news>
  
  <news>
    <title value="une 2eme news" />
    <texte>
      <![CDATA[ texte de la 2eme news ]]>
    </texte>
    <links>
      <link url="http://www.v-network.info" text="Allboard Network" />
    </links>
  </news>
  
</main>

Comme vous pouvez le voir, nous devons specifier un header. si il n'y en a pas, flash va quand meme le charger, mais ce header permet de preciser l'encodage.

<?xml version='1.0' encoding='UTF-8' ?>

les info sont entre <?xml et ?>
version='1.0' ne changera pas puisque seul la version 1.0 existe pour l'instant ;)

encoding='UTF-8' determine l'encodage du fichier.
UTF-8 est le plus utilisé, mais il existe une multitude d'encodages possibles.
UTF-8 est le codage 'europeen'. Il est celui utilsé dans les pays utilisant notre alphabet.
Il existes d'autres encodage tel que windows-1252, ISO-8859-1, UTF-16 ...

Apres le header, nous voyons que les Balises sont mis entre une paire de balise <main></main> que l'on appele balises "root".
quelque soit le document xml, Tout le document doit etre encadré ce cette pair de balise.
Le nom de cette paire balise n'as pas d'importance.

Il y a 2 types de balises;
Celles, comme en HTML qui se composent en paire <nom></nom> et celles uniques, qui sont de type <nom />
Chaque type de balise ouvrante px accueillir des parametres, exemple, <nom parametre="valeur"></nom> ou <nom parametre="valeur" />.
Les balises uniques ne servent uniquement a accueillir des parametres.
Pour fournir un texte complet, mettez le entre une paire de balises, mais attention! si votre texte se compose de code html, les balises html seront considérés comme des balises xml, ce qui entrainera souvent une erreur.
Pour eviter cela, Vous pouvez placer votre texte entre les pseudo-balises <!CDATA![ et ]]>.
exemple:
  <nom>
    Voici un texte en gars: <br>
    <b>blablabla</b>
  </nom>
Si vous faittes comme cela, les balises html vont etre considérées comme du xml, et la syntaxe n'etant pas correct, en particulier pour le <br>, le fichier va retourner une erreur. C'est alors qu'intervient le CDATA:
  <nom>
    <![CDATA[
      Voici un texte en gars: <br>
      <b>blablabla</b>
    ]]>
  </nom>
Tout ce qui se trouve dans la balise CDATA ne sera pas interpreté.


Maintenant que vous possedez les bases syntaxiques du XML, nous allons commencer le code action-script.

Pour exploiter du xml, nous devons declarer un nouvel objet XML:
	myXML = new XML();

Nous voulons que les espaces et sauts de lignes ne soient pas interpretés (ce qui est preferable, sinon ça fout le bordel), pour cela, nous disposont de la propriété ignoreWhite:
	myXML.ignoreWhite = true;

Nous allons maintenant charger le fichier:
	myXML.load("fichier.xml");

Le fichier pouvant mettre plusieurs secondes a se charger en focntion de sa taille et de la conenction, nous allons faire intervenir la fonction onLoad() qui executera son code des que le xml est chargé. Cette fonction recoit un argument de type booleen (1 ou 0; true ou false) qui correpond a l'etat de chargement; true(1) = le document est chargé, false(0) = le document n'est pas chargé, probablement indisponible ou en erreur:
	myXML.onLoad = function(flag) {
	  if (flag) { // si flag = true
	    // reste du code.
	  }
	}

Maintenant que nous savons composer et charger un document XML, il faut l'analyser.
Pour cela, Nous allons parcourir les "branches" du fichier, qui comme tt le monde a du le remarquer se compose comme une arborescence.
Pour cela, nous allons utiliser une boucle while(), bien qu'il soit aussi possible de passer par un for().
Voici l'arborescence sommaire du fichier :

+main
-+news
----title (value)
----texte [cdata]
---+links
------link 1 (url, text)
------link 2 (url, text)
------link 3 (url, text)
-+news
----title (value)
----texte [cdata]
---+links
------link 1 (url, text)

j'espere qu'il est assez clair pour tt le monde.

Afin de parcourir le fichier, nous disposons de 2 fonctions principales:
xml.firstChild et xml.childNodes[x].
xml.firstChild retourne la premiere "branche" du noeud "xml".
xml.childNodes[x] retourne le noeud "x" du noeud "xml", sinon il retourne "undefined" si la valeur le noeud "x" n'est pas trouvé.
xml.firstChild equivaut donc à xml.childNodes[0].

quand le fichier xml est chargé, notre objet XML "myXML" prend comme valeur le contenu du fichier xml.
Vous pouvez vous en rendre compte en effectuant un trace(myXML);
Donc, afin d'isoler les sections de news, nous pouvons faire trace(myXML.firstChild); qui va nous retourner uniquement les zones de news.

Etant donnée que le nombre de news est dynamique, nous allons les afficher une par une, sans savoir a l'avance combien il y en a.
Pour cela, nous allons utiliser notre boucle while, xml.childNodes[x] et xml.firstChild.
(tout le code qui suis devra se placer a la place de "// reste du code.", dans la fonction onLoad()).

	//initialisation
	i=0; // on initialise le compteur.
	x = myXML.firstChild; // on se place sur le noeud des news.
	while (x.childNodes[i] != undefined) { // tant qu'il y a des news...
		trace(x.childNodes[i]); // on affiche le noeud de news trouvé.
	i++; // on incremente le compteur.
	}
	trace(i+" news trouvées"); 	// on affiche le nombre de news trouvé, c'est pas utile
					// pour ce tutoriel, mais c'est un plus ;)

Voila!
Nous avons commencé a parcourir le fichier!
Si vous avez compris le bout de code ci-dessus, vous avez tout compris du xml, ou presque.

Mais afin de faire un tutoriel complet, je vais aller jusqu'au bout de cette exploration du fichier.
Nous avons donc su afficher chaque noeud de news.
Nous allons donc explorer chaque news!
Pour cela, nous devons nous servir d'une nouvelle fonction: xml.attributes
Pour comprendre l'utilité de cette focntion, il faut voir les specificités du xml; En effet, nous avons 2 facons pour stocker du texte: 
- entre une paire de balise: <nom>texte</nom> 
- dans une balise: <nom attr="texte" />
Pour acceder au premier type (la paire de balise), un simple firstChild suffit.
Par contre, pour acceder a la balise elle meme, nous devons utiliser noeud_xml.attributes.nom_attribut
Exemple :
Pour <link url="http://www.allboard.net" text="Allboard Network" />
Pour acceder a la valeur de "url", nous allons faire noeud_xml.attributes.url
et pour acceder a la valeur de "texte" noeud_xml.attributes.text

Voici donc le code complet qui permet d'explorer le fichier xml.
Vous disposez maintenant de toutes les notions necéssaires pour comprendre ce code.

	i = 0;
	x = myXML.firstChild;
	while (x.childNodes[i] != undefined) {
		trace(""); // ligne vide
		trace("--- NEWS "+(i+1)+" ---"); // le (i+1) permet d'afficher "NEWS 1" et non pas "NEWS 0",
						 // mais c'est juste une question esthetique.
		trace("titre:\t"+x.childNodes[i].childNodes[0].attributes.value); // le titre, avec le fameux "attributes"!
		trace("texte:\t"+x.childNodes[i].childNodes[1].firstChild); // le texte, via un simple firstChild.
		trace("liens:"); // ha! là on ne sais pas combien il y a de liens par news! ça devient interessant!
		j = 0; // on initialise j.
		while (x.childNodes[i].childNodes[2].childNodes[j] != undefined) { // tant qu'il y a des liens...
			trace("\t --- LIEN "+(j+1)+" ---"); // on affiche le numero de lien...
			trace("\t lien:\t"+x.childNodes[i].childNodes[2].childNodes[j].attributes.url); // ...son url,
			trace("\t texte:\t"+x.childNodes[i].childNodes[2].childNodes[j].attributes.text); // son texte...
			j++; // on incremente le compteur j.
		}
		i++;
	}
	trace(""); // ligne vide, purement esthetique.
	trace(i+" news trouvées");
	
Et voila!
Vous pouvez desormais vous servir du xml, qui est si pratique avec flash!
Un conseil, avant de coder, regardez bien la structure du xml, si elle est complexe, faites le shema simplifié comme on a fait, et distinguez bien les elements statiques (titre, texte toujours au meme nombre et à la meme place) des elements dynamiques (souvent a la meme place, mais rarement au meme nombre).

Amusez vous bien!


Je resume le code complet ::

myXML = new XML();
myXML.ignoreWhite = true;
myXML.load("file.xml");
myXML.onLoad = function(flag) {
	if (flag) {
		i = 0;
		x = myXML.firstChild;
		while (x.childNodes[i] != undefined) {
			trace("");
			trace("--- NEWS "+(i+1)+" ---");
			trace("titre:\t"+x.childNodes[i].childNodes[0].attributes.value);
			trace("texte:\t"+x.childNodes[i].childNodes[1].firstChild);
			trace("liens:");
			j = 0;
			while (x.childNodes[i].childNodes[2].childNodes[j] != undefined) {
				trace("\t --- LIEN "+(j+1)+" ---");
				trace("\t lien:\t"+x.childNodes[i].childNodes[2].childNodes[j].attributes.url);
				trace("\t texte:\t"+x.childNodes[i].childNodes[2].childNodes[j].attributes.text);
				j++;
			}
			i++;
		}
		trace("");
		trace(i+" news trouvées");
	}
};


Ce tutoriel à été ecrit par BlackWizzard pour Flashkod.
Diffusion autorisé a la seul condition de laisser mon pseudo en signature.



 Sources du même auteur

Source avec Zip Source avec une capture SPORE-LIKE DEMO
Source avec Zip Source avec une capture LINECHART / AREACHART : COMPOSANT AS2, SOURCE XML, STYLE PAR...
Source avec Zip COURS FLASH: COMMUNICATION FLASH/PHP
Source avec Zip 3D TEMPS REEL EN AS2
Source avec Zip Source avec une capture CLASS PIECHART: CODE ET COURS (8 PAGES FLASHPAPER/WORD)

 Sources de la même categorie

AS3.0: UPLOAD DE FICHIER ET RECUPERATION DE LA REPONSE DU SE... par nickydaquick
MODIFIER LES APOSTROPHES ET AUTRES CARACTÈRES MADE IN WORD D... par ourso
Source avec Zip Source avec une capture CLASS CIRCLE, GEOM ET BOX : EXTENTION DU PACKAGE "FLASH.GEOM... par top30
Source avec Zip Source avec une capture UTILISER DES CLIPS PLUTOT QUE DES SÉQUENCES par zoukozouko
Source avec Zip TUTORIAL POUR LES DÉBUTANTS par superslouma

Commentaires et avis

Commentaire de top30 le 13/10/2003 19:15:29

Pour ceux qui comprendrait pas le mot "flag" dans le onLoad du XML... Je penses que "succes" est plus simple car cela sous entend :

...load("file.xml");
myXML.onLoad = function(SUCCES) {
  if (SUCCES) {
    i = 0;
etc....

Encore bravo pour ton courage... ; )  &gt; 6/10 !

Commentaire de BlackWizzard le 13/10/2003 19:27:37 administrateur CS

thx :)
j'ai mis 2 jours a le faire, mais separé par plus de 3 semaines lol
mais je l'ai enfin publié :)

Commentaire de afad le 14/10/2003 00:29:44

Sacré boulot BlackWizzard (9/10 pour pas mettre 10 ;-), ça tombe bien, je me remet un peu dans le bain pour ressortir une version XML de mon Mediaplayer afAd : http://www.flashkod.com/code.aspx?ID=14162, ya plein de gens qui souhaitent l'utiliser, autant le rendre autonome ;-)

a+
afaD

Commentaire de righton le 14/10/2003 00:54:06

Super tut !
Pouet ! ;)

Commentaire de afad le 14/10/2003 01:13:57

Oupss, j'avais oublié, on fête la 700ième source (officiel)  de Flashkod, Champagne pour tout le monde. Encore un petit effort et on survole JavascriptFr et PHPcs pour finir 3ème du CS. :-))

Commentaire de righton le 14/10/2003 01:48:11

ouais à ce propos, un grand merci aux wally et autres sans qui ça aurait été impossible !

;)

Commentaire de top30 le 14/10/2003 13:06:57

Trop fort Righton... Car sous l'ironie se cache une part de vérité  = )  Mème si je supporte pas les sources de ce pauvre Wally qui essaie de participer tant bien que Mal...

Commentaire de Wally57 le 15/10/2003 12:30:50

                       ||||||||||||||          On parle dans mon dos ?
                       |               |          |
                     @   (0)  (0) /@      &lt;|
                         |       &gt;  |
                                0  /
                           \_____/

Commentaire de righton le 19/10/2003 18:40:51

quel talent !

Commentaire de buff@lofluo le 06/02/2004 11:08:43

Merci bcp pour ton tutorial très bien detaillé et clair grace a toi jai compris comment sa marche.

Commentaire de rtgiman le 19/02/2004 21:19:30

j'ai cherché un truc comme ça pendant un sacré bout de temps, j'ai poser des questions à des gens qui m'ont répondu en chinois et ça a pris des plombes, alors que finalement,  c'est tout simple.

Merci.

Commentaire de Queja le 17/03/2004 10:52:22

Merci, super 10/10

petite info:
les caractères spéciaux sont traités correctement avec xml, donc ne pas utiliser system.usecode=true;

Commentaire de ronan972 le 13/05/2004 06:00:12


en + :http://www.flashkod.com/code.aspx?ID=22768

sinon merci pour cette introduction 7/10

Commentaire de flavioabreu le 06/10/2004 15:35:39

Salut,

Super ce tutorial, vraiment top ;o) J'ai cherché pas mal de temps une explication comme celle-ci et là, bravo j'ai tout compris.

Par contre une question reste ouverte (ou alors j'ai pas bien compris) : comment insérer les news ensuite dans une case texte (Dynamic text)

Merci pour votre réponse ;o)

Commentaire de BlackWizzard le 06/10/2004 15:43:39 administrateur CS

Si ton champs de text dynamique a pour instance 'tf':

myXML = new XML();
myXML.ignoreWhite = true;
myXML.load("file.xml");
myXML.onLoad = function(flag) {
  if (flag) {
    i = 0;
    x = myXML.firstChild;
    while (x.childNodes[i] != undefined) {
      tf.htmlText += ("--- NEWS "+(i+1)+" ---");
      tf.htmlText += ("<b>"+x.childNodes[i].childNodes[0].attributes.value+"</b>");
      tf.htmlText += ("<i>"+x.childNodes[i].childNodes[1].firstChild+"</i>");
      tf.htmlText += ("<u>liens:</u>");
      j = 0;
      while (x.childNodes[i].childNodes[2].childNodes[j] != undefined) {
        tf.htmlText += ("\t --- LIEN "+(j+1)+" ---");
        tf.htmlText += ("<a href=\""+x.childNodes[i].childNodes[2].childNodes[j].attributes.url+"\">"+x.childNodes[i].childNodes[2].childNodes[j].attributes.text+"</a>");
        j++;
      }
      tf.htmlText += "<br><br>";
      i++;
    }
    tf.htmlText += ("<br><br>"+i+" news trouvées");
  }
};

ecrit en live, pas testé, mais je pense que ça devrait fonctionner...

Commentaire de BananaTree le 03/11/2004 18:30:11

slt BW. j'avais vu ce tuto sur flashkod, et j'avais rien capté.
je viens de le voir sur ton blog, et là c'est le jour et la nuit. bravo (Ce qui se présente bien se comprend aisément)
mon dernier post ds le forum sur le html à du faire marrer pas mal de monde, mais si j'avais trouvé un tuto identique avec l'ensemble des methodes et des propriétés xml présentées et commentées, j'aurais mis une source, au lieu d'un post.

donc si qq connait un site avec la présentation complette du tandem xml/flash , ou un bouquin, merci d'avance.

Commentaire de BlackWizzard le 07/11/2004 23:01:04 administrateur CS

pour savoir gerer flash/xml, pas compliqué, ce tutor explik les 3/4, apres matte la reference des fonctions de l'object XML dans la doc flash de macromedia, et si tu vx completer: colin moock, carlo blatz (cherche sur amazon)

Commentaire de BananaTree le 07/11/2004 23:44:27

super cool,
merci

Commentaire de thanae19 le 21/12/2004 11:38:58

Super!
Un gran merci, si j'avais pu avoir un tutoriel pareil pour ASP où là on m'a répondu aussi en chinois comme pour rtgiman.
Ici au moin j'ai compris directe.

Thanae19

Commentaire de Draconagi le 21/01/2005 12:13:42

SUPER! BlackWizzard grâce à toi j'ai pu apprendre pas mal.
Tes tutoriaux sont géniaux.
Merci et bonne continuation.

Commentaire de deneus le 04/02/2005 14:28:26

Cool ton truc BW ;)
Mais pour la gestion du chinois sa marche pas :(

Enfin tu a qasiement fait la meme chose que ce sur quoi je bosse, et chez moi, je doit le faire en plusieurs langues, dont le chinois.
Et tout marche sauf sa ...
Le probleme viendrais soit de l xml qui ne gererait pas chinois (enfin apprament en utulisant encoding="ISO-8859-1" c est sensé etre interpreter corectement) mais dans le flash a part des points d'interogations... il n y a rien.
Si quelqu un a une idée, je suis open
Merci

Commentaire de BlackWizzard le 04/02/2005 22:36:12 administrateur CS

dans flash, tu a inclus une police qui gere le chinois?

Commentaire de deneus le 05/02/2005 00:14:00

Ben j ai essayer tout les "caracteres" proposer par le menu de flash MX mais y a rien a faire, sa n affiche que des points d'interogations.
Si j ouvre le fichier XML avec wordpad, ls caracterer chinois d affichent corectement.... mais une fois dans flash sa passe pas :(

Si tu as une idée, ou que tu pense a un module quil fodrai ajouter avec macromedia Exchange...

Commentaire de snakeeater1 le 11/02/2005 14:52:00

je comprend pas la... quand je charge un texte écrit dans les CDATA ou même entre 2 balise, flash ne veut pas m'afficher lé "é" ou "è" ou encore "à" .
Une solution dans la salle ?

Commentaire de snakeeater1 le 11/02/2005 15:30:48

autre question comment fait-on pour que des balise html de lien écrite dans un cdata soient convertie en lien ds le textfield de flash pake moi lorsque je charge mon fichier xml ds un textfield ( en ayant fait mon_textfield.html = true; ) et bien il m'écrit mes balise mais ne me les transforme pas en html il me les écrit normalement !!!!

Commentaire de BlackWizzard le 11/02/2005 16:20:07 administrateur CS

Pour les accents:
System.useCodepage = true;

Pour les liens, meme si ton textfield est en html = true, il faut utiliser tf.htmlText = "<a href=\"blah.html\">blablabla</a>"; et non pas tf.text = ...

Commentaire de snakeeater1 le 11/02/2005 17:41:34

ok merci

mais pour le tf.htmlText c'est raté lorsque je load le cdata d'un noeud qui comporte les balise d'un lien y me le transforme pas en lien...

Commentaire de snakeeater1 le 11/02/2005 17:42:53

en plus il ne me prend même pas les balises <br> ou <b> ou rien du tout de mon cdata.... pige pas la...

Commentaire de deneus le 11/02/2005 19:33:35

Alors pour les caractere chinois a partir d un XMl ( je reponds moi meme a ma question ), il faut mettre dans le xml encode="UTF-8"

et si vous utilisez " System.useCodepage = true; "
tous les caractere ne s afficheront pas.

moi pour mon appli en 15 langues, jai utilser l'encodage UTF-8 et "System.useCodepage = true ;" et sa marche impec

et pour les balise dans du XML , j ai lu qu on pouvait appliquer du CSS a partir du XML.. enfin c est a creusé et c est des sources fr.
bonne continuations tout le monde

Commentaire de BlackWizzard le 11/02/2005 21:42:29 administrateur CS

Pour les balises en CDATA, je me souvient que ça ne fonctionne pas... les "<" sont mis en "&lt;".
Du coup, il faut les retransformer.
Pour ça, va voir ma source rssReader, dans le code il y a une fonction pour retransformer en html.

Commentaire de thanae19 le 12/02/2005 11:13:15

Bonjour à tous,
J'ai aussi eu du mal pour trouver la solution, mais après plus rechercher et test j'ai trouver, en tout cas dans mon cas.
Dans mon fichier XML j'ai introduit la déclaration suivante:
<!DOCTYPE main
[
<!ELEMENT lesujet (titre, texte)>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT texte (#PCDATA)>
]>
Mais il faut que le texte dans l'élément commence absolument par une balise html, sinon ca fait des erreurs.
Ensuite pour les éléments qui n'en ont pas il faut indiquer:
<texte><![CDATA[...blabla...]</texte>

Voila, en tous cas pour moi ca fonctionne bien comme ca.
Enfin j'espere que ca pourra aider.

Commentaire de snakeeater1 le 13/02/2005 12:31:19

ba c'est sa que je comprend pas c'est pas qu'il m'affiche des "&lt;" ou des truc du genre il m'affiche bien mes balise style <a> <b> ...  mais il me les met en tant que texte normal et ne me les "utilise" pas !

Commentaire de deneus le 13/02/2005 15:36:14

si le browser t affiche des &lt, essaye de remplacer dans ton fichier les "<" par "&lt"et ">" par "&gt"  ...
sa devrait ptet passer ...
enfin j ai jms utiliser de code html dans mon xml... donc je peu pas t aider plus que sa

Commentaire de ArChYY le 14/02/2005 14:11:54

Super se tuto.

Comment insérer les news ensuite dans une case texte (Dynamic text) ?

Suis noob

Commentaire de BlackWizzard le 14/02/2005 19:02:18 administrateur CS

ya le code dans les commentaires (date: 06/10/2004 15:43:39)
Sinon regardes mes autres cours sur ce site.

Commentaire de Dinofly le 22/03/2005 10:23:52

Salut,

Quelqu'un sait-il s'il est possible de valider un fichier XML par rapport à une DTD en Flash ?
J'ai cherché et je n'ai rien trouvé, ça me paraît tellement improbable qu'un langage aussi répandu que Flash n'implémente pas cette fonctionnalité que je vous pose quand même la question.

Merci d'avance.

Commentaire de ombr0 le 10/05/2005 13:31:11

Merci pour ce bon tuto sa fait plaisir !!

Commentaire de YopSolo le 04/01/2006 22:44:59

Dinofly >> le parseur XML de flash n'est pas validant.

Commentaire de alencredetesyeux le 09/02/2006 13:40:43

bonjour tout le monde
et merci a toi blackwizzard.....

J'aurais une petite question par apport a ce tuto .
voila ,j'aurais aimé faire en sorte a ce que des que je clic sur un
bouton , celui ci aille sur une autre news .

j'ai essayé :

btn_dream.onRelease = function() {
news1_txt.htmlText += (i+1);
news1_txt.htmlText += (j+1);
};
Mais ca ne passe pas .
dois remetre le code en entier (a par la parie new xml=.. load .. )
pour chaque  NEWS ?

sinon , j'aurais une autre petite question ?
quelles seraient les raison pour qu'un fichier CSS soit pris en compte une fois sur deux ?

Merci encore pour tout
Et merci a toi black la majoritée de tes tuto mon été très utile .
;-)

Commentaire de BlackWizzard le 09/02/2006 23:42:35 administrateur CS

Concernant ton bouton, c'est un probleme de ciblage.
Essai de debuger en ajouter trace(i); pour voir si la variable "i" existe (si elle a une valeur, elle existe, sinon tu aura "undefined").
Tu peut egalement verifier le type de ta variable: trace(typeOf(i));
Le plus simple est d'utiliser le chemin complet de la variable: _root.i par exemple. Il y a des solutions plus propres mais aussi plus complexes, donc commence par ça pour tester, tu verra les variables globales et le reste plus tard ;)

Commentaire de alencredetesyeux le 10/02/2006 09:58:40

Ok ... je vais voir ca de ce pas ....

Je te remercie ...

MIC

Commentaire de alencredetesyeux le 10/02/2006 10:55:21

La variable "i" existe bien .


myXML = new XML();
myXML.ignoreWhite = true;
myXML.load("fichier.xml");
myXML.onLoad = function(succes) {
if (succes) {
i = 0;
x = myXML.firstChild;
while (x.childNodes[i] != undefined) {
news1_txt.htmlText += ("");
news1_txt.htmlText += ("NEWS "+(i+1)+" :\n");
news1_txt.htmlText += ("\n titre:"+x.childNodes[i].childNodes[0].attributes.value);
news1_txt.htmlText += ("\n texte:"+x.childNodes[i].childNodes[1].firstChild);
news1_txt.htmlText += ("\n liens: aucun lien pour le moment");
j = 0;
while (x.childNodes[i].childNodes[2].childNodes[j] != undefined) {
news1_txt.htmlText += ("\n LIEN "+(j+1)+" :\n");
news1_txt.htmlText += (" \n lien:"+x.childNodes[i].childNodes[2].childNodes[j].attributes.url);
news1_txt.htmlText += ("\n texte:"+x.childNodes[i].childNodes[2].childNodes[j].attributes.text);
j++;
}
i++;
}
news1_txt.htmlText += ("");
news1_txt.htmlText += (i+" news trouvées");
}
};
_root.btn_dream.onRelease = function() {
news1_txt.htmlText += (i+1);

};



( j'ai mis deux news sur le xml  )
Des que je le lance il m'affiche la news 1
et quand je clic sur le bouton , il me r'ajoute la valeur de "i"+1
soit (2)a la suite de la news 1.

NEWS 1 :

titre:Flash MX
texte:Flash MX est un tres bon logiciel...
liens: aucun lien pour le moment
LIEN 1 :

lien:http://www.allboard.net
texte:Allboard Network
LIEN 2 :

lien:http://www.blackwizzard.com
texte:BlackWizzard  NetWork
LIEN 3 :

lien:http://www.underground-fr.com
texte:Underground-fr1 news trouvées2

Ce que j'aurais souhaité c'est de faire en sorte a ce que la news 1
disparaisse pour laisser aparaitre la news 2 et ainsi de suite pour les autres futur news .

Désolé si mes questions vous semble tres basic mais , je debute depuis peut .

Merci encore pour tout

MIC



Commentaire de BlackWizzard le 10/02/2006 11:08:06 administrateur CS

envoi ton fla par mail, je le corrige et je le publis en plus de ce cours.

Commentaire de makfly78 le 06/04/2006 19:32:28

Merci pour ce petit cours trés clair.
Avec sa, va faire des merveilles.
tcho

Commentaire de Julio001 le 08/11/2006 17:38:00

Félicitation BlackWizzard, ce tutoriel est vraiment très bien !!
Par contre, j'ai un petit problème avec le HTML, je l'ai activé mais il ne semble pas être entièrement pris en compte. Jai mis "tf.html = true;" et ça semble correct puisque les balises n'apparaîsse pas et les sauts de ligne se font, les <br /> sont pris en compte. Mais quand j'essaye de faire un lien ou de mettre le texte en bold ça ne marche pas... les balises <a>,<b>,<i> et <u> ne fonctionne pas et je ne comprend pas pourquoi.
J'utilise Flash 8 et action script 2.0  pourtant.
Quelqu'un peut me dire comment règler ce problème ?

Commentaire de BlackWizzard le 08/11/2006 20:36:10 administrateur CS

faudrais voir ton code html...
flash ne supporte que le XHTML strict.

Commentaire de YopSolo le 08/11/2006 22:30:24

le truk "bête"
tf.html = true << ok c bien mais ensuite tu affecte bien a tf.htmlText = "<b>du blablabla gras</b>" ?

Commentaire de Julio001 le 08/11/2006 22:57:54

Merci pour votre aide aussi rapide !!
Là où y a des balises oui, je mettais tf.htmlText = ...
mais à une place ou c'était du texte simple j'avais laissé tf.Text = ...
je croyais pas que ça causerais de problème mais il semble que oui, ça entre en conflis ou je ne sais pas pour quel raison flash désactive le html à ce moment là.

Commentaire de aerandil le 19/11/2006 15:06:04

Merci pour ce tuto,

j'avais rien compris au fonctionnement du XML en flash pendant les cours :p
Mais là c'est clair et net, je vais faire tourner ce lien, il pourrait être utile à pas mal de mes camarades ;)
En tout cas bravo.

10/10

Commentaire de BlackWizzard le 19/11/2006 15:40:05 administrateur CS

en cours? c'est quoi tes etudes?

Commentaire de aerandil le 19/11/2006 16:12:24

DUT Service et Réseau de Communication

Mais la prof à un peu du mal à nous expliquer clairement des fois :p

Commentaire de BlackWizzard le 19/11/2006 17:53:23 administrateur CS

j'avais hesité à faire ça... mais trop de math, trop de sciences, et trop scolaire dans l'ensemble... du moins c'est l'impression que j'en ai eu.
Sinon, c'est bien comme etudes?

Commentaire de janetdream le 16/12/2006 02:32:27

Tout marche à merveille et merci pour ce tuto qui enfin vaut la peine qu'on y prète attention.

Maintenant ma question est : comment faire pour intégrer des images. J'imagine que c'est quelque chose comme : tf.htmlText += ("<img src=\""+x.childNodes[i].childNodes[2].childNodes[j].attributes.img+"\">"+x.childNodes[i].childNodes[2].childNodes[j].attributes.text+"</img>");
        j++;
      }

Si vous avez une idée précise sur le sujet... Merci ;)

Et pendant qu'on y est pour intégrer des liens sur des images :D

Commentaire de janetdream le 16/12/2006 05:27:35

J'ai essayer aussi d'ajouter la dâte pour chaque news mais sans succés...

Coté xml :

<date value="15-12-06" />

Commentaire de janetdream le 16/12/2006 05:54:14

C'est bon j'ai réussis pour la dâte !

Coté xml :

<?xml version='1.0' encoding='UTF-8' ?>
<main>
  
  <news>
  <date value="15-12-06" />
     <title value="Enjoy Numero 1 !" />
    <texte>
      <![CDATA[Personne ne s'y attendait et pourtant ! Enjoy qui etait recement 24eme se retrouve 1er sur les charts Japonnais !!! Une agreable nouvelle qui donne le sourire a plus d'un fan...]]>
    </texte>
    <links>
      <link url="http://www.j-wave.co.jp/original/tokiohot100/" text="Source." />
    </links>
  </news>
  <news>
  <date value="15-12-06" />
    <title value="Janet-Design Happy Birthday !!!" />
    <texte>
      <![CDATA[ 1an d'anniversaire pour Janet Dream/Design. Un an pendant lequel mon site n'a eut de cesse de soutenir Janet dans son retour. J'espere de tout mon coeur voir Janet reussir en 2007.]]>
    </texte>  
<links>
      <link url="http://www.janet-design.com" text="Pas de source." />
    </links>
  </news>
  
</main>

coté AS :

System.useCodepage = true ;
myXML = new XML();
myXML.ignoreWhite = true;
myXML.load("http://janet-design.com/xml/news1.xml");
myXML.onLoad = function(flag) {
  if (flag) {
    i = 0;
    x = myXML.firstChild;
    while (x.childNodes[i] != undefined) {
  tf.html = true;
      tf.htmlText += (x.childNodes[i].childNodes[0].attributes.value);
       tf.htmlText += ("<b>"+x.childNodes[i].childNodes[1].attributes.value+"</b>");
   tf.htmlText += (x.childNodes[i].childNodes[2].firstChild);
      j = 0;
while (x.childNodes[i].childNodes[2].childNodes[j] != undefined) {
        
        tf.htmlText += ("<i><a href=\""+x.childNodes[i].childNodes[3].childNodes[j].attributes.url+"\">"+x.childNodes[i].childNodes[3].childNodes[j].attributes.text+"</a></i>");
        j++;
      }

      tf.htmlText += "<br>";
      i++;
    }
    tf.htmlText += ("<br><br>"+i+" news trouvées");
  }
  };


Par contre les accents ne sont tjs pas gérés (sauf les apostrophes) et je ne parviens tjs pas à inclure des images dans le xml. :(

Commentaire de YopSolo le 16/12/2006 12:49:01

<?xml version='1.0' encoding='UTF-8' ?>
le parseur XML de flash est "non-validant" il ignore purement et simplement cette balise
Si tu as des pb d'accents il vaut mieux eviter de les resoudre avec une bidouille du genre : System.useCodepage = true, et utiliser vraiment le l'UTF-8! plutot que le jeu de caractère du navigateur.

si c'est un fichier xml existant qui sert de source (dans SciTe : file > encoding > UTF-8)
si c'est un fichier xml générée coté serveur il faut preciser le jeu de caractère UTF-8 au moment de la création du xml

bon courage :)

Commentaire de janetdream le 16/12/2006 15:48:50

Finalement j'ai utiliser un source plus simple qui accepte les images et les urls de manière très simple...

Commentaire de afad le 16/12/2006 17:46:21

Il y a un forum pour ce genre de question Merci...

Commentaire de aerandil le 20/12/2006 19:28:30

Désolé de repondre si tardivement à ta question BlackWizzard:

Oui, c'est assez intéressant. Après je suis déjà titulaire d'un BTS Informatique de Gestion option Developpeur Application, du coup les cours de prog me passent au dessus de la tête ^^, sauf celui de Flash puisque j'avais jamais pratiqué . Après coté graphisme/vidéo je trouve la formation plutot bien faite, mais après ça dépends beaucoup des enseignants je pense.

Il faut préciser que je suis en Année Spéciale, on fait le DUT en 1an (comme on a déjà un bac +2), on a aucune matière générale (pas de math, anglais, eco-droit, gestion) et surtout on est une petite promo: 8 . Du coup ya une excellente ambiance, les profs sont plus attentifs et surtout on s'aide beaucoup, étant donnée que sur 8 il y a 3BTS IG , 3BTS Comm Visuelle (graphisme), un DUT Reseau et Telecom, et un Deug Science, on a à peu près toutes les compétences du coup il y a toujours quelqu'un pour aider en cas de soucis .

Commentaire de loustik16 le 31/01/2007 01:57:57

salut, merci pour ce tut tres clair et les commentaires qui le suive

moi je l'utilise pour faire une page de liens en utilisant juste le titre et l'url
chaque news de mon xml donne ça :

<news>
    <title value="Syndicat National des Artistes Tatoueurs" />
      <links>
      <link url="http://www.s-n-a-t.org/" text="www.s-n-a-t.org" />
    </links>
  </news>

et mon script simplifié donne ça :

System.useCodepage = true ;
myXML = new XML();
myXML.ignoreWhite = true;
myXML.load("lien.xml");
myXML.onLoad = function(flag) {
  if (flag) {
    i = 0;
    x = myXML.firstChild;
    while (x.childNodes[i] != undefined) {
  tf.html = true;
      tf.htmlText += ("<b>"+x.childNodes[i].childNodes[0].attributes.value+"</b>");
         j = 0;
while (x.childNodes[i].childNodes[1].childNodes[j] != undefined) {
        tf.htmlText += ("<a href=\""+x.childNodes[i].childNodes[1].childNodes[j].attributes.url+"\">"+x.childNodes[i].childNodes[1].childNodes[j].attributes.text+"</a>");
        j++;
      }
      i++;
    }
    tf.htmlText += (i+"liens");
  }
  };

et voila ma question : est il possible qu'il n'y est pas de saut de ligne entre mon titre et le text de l'url ?
en gros que seul le saut entre chaque news subsite et donc que chaque lien ne prenne qu'une ligne ??

en inde on dit 'all it's possible my friend' et la y'a pas un friend qui aurait une idée ?

Commentaire de BlackWizzard le 31/01/2007 07:34:53 administrateur CS

System.useCodepage = true ;
myXML = new XML();
myXML.ignoreWhite = true;
myXML.load("lien.xml");
myXML.onLoad = function(flag) {
  if (flag) {
    i = 0;
    x = myXML.firstChild;
    while (x.childNodes[i] != undefined) {
  tf.html = true;
var buffer:String;
      buffer = ("<b>"+x.childNodes[i].childNodes[0].attributes.value+"</b>");
         j = 0;
while (x.childNodes[i].childNodes[1].childNodes[j] != undefined) {
        buffer += ("<a href=\""+x.childNodes[i].childNodes[1].childNodes[j].attributes.url+"\">"+x.childNodes[i].childNodes[1].childNodes[j].attributes.text+"</a>");
    tf.htmlText += buffer;
        j++;
      }
      i++;
    }
    tf.htmlText += (i+"liens");
  }
  };


pas testé mais ça devrais aller...

Commentaire de janetdream le 09/03/2007 05:43:39

N'empèche  BlackWizzard ta source à un réel intéret. Merci mille fois !!!

Maintenant il faudrait l'étendre avec du php afin d'ajouter les news sans passer par un FTP...

Je m'y interesserais quand j'aurais plus de temps.

Commentaire de Rose95 le 11/04/2007 12:25:04

Bonjour,

Merci pour ce tuto (encore un merci dans cette longue liste).
Mais quelqu'un peut il m'expliquer quelque chose surement de fondamentale mais désolée je suis débutante en la matière et je rame pour comprendre certaine chose:
j'ai un xml de type : (j'ai allégé en supprimant les attributs des balises de paragraphes en ne laissant que le Titre)
-----------------------------------------------------
<?xml version='1.0' encoding='UTF-8'?>

<main>
<PG>
    <Id_Menu value="01" />
<paragraphes>
<paragraphe Titre="Titre 1"  >
<![CDATA[ Ceci est le Texte 1 du menu 01: blablabla]]>
</paragraphe>

</paragraphes>
</PG>

<PG>
    <Id_Menu value="02" />
<paragraphes>
<paragraphe Titre="Titre 1"  >
<![CDATA[ Ceci est le Texte 1 du menu 02: blablabla]]>
</paragraphe>

<paragraphe Titre="Titre 2"  >
<![CDATA[ Ceci est le Texte 2 du menu 02: blablabla]]>
</paragraphe>
</paragraphes>
</PG>

<PG>
    <Id_Menu value="08" />
<paragraphes>

<paragraphe Titre="Hébergement"   >

<![CDATA[ Hébergement du site Web
Nom de domaine
Adresses Mail
Statistiques
Sauvegarde Journalière
Service Maintenance par mail : <b>illimité</b>]]>

</paragraphe>

<paragraphe Titre="Titre 2" >
<![CDATA[ Ceci est le Texte 2 du menu 08: blablabla]]>
</paragraphe>
</paragraphes>
</PG>
</main>

----------------------------------
avec le code AS que j'ai mis sur l'image 1 d'une animation vide (donc il n'y a que l'image 1 dans rien d'autre, ni clip, ni rien ("Rien, pas une boîte, pas un troquet, pas un mobylette ... Rien ! ..." ;-) ) :
Code AS :
------------------
myXML = new XML();
myXML.ignoreWhite = true;
myXML.load("paragraphes2.xml");
myXML.onLoad = function(flag) {
if (flag) {
i = 0;
x = myXML.firstChild;
while (x.childNodes[i] != undefined) {
trace("");
trace("--- Menu "+(i+1)+" ---");
trace("Id_Menu:\t"+x.childNodes[i].childNodes[0].attributes.value);
trace("Paragraphes :");
j = 0;
while (x.childNodes[i].childNodes[1].childNodes[j] != undefined) {
trace("\t --- Parag "+(j+1)+" ---");
trace("\t Titre:\t"+x.childNodes[i].childNodes[1].childNodes[j].attributes.Titre);
trace("texte:\t"+x.childNodes[i].childNodes[1].childNodes[j].childNodes[0]);
j++;
}
i++;
}
trace("");
trace(i+" menus trouvées");
}
};

------------------
ça marche bien : il m'affiche en trace les différentes infos demandées :
---------------------

--- Menu 1 ---
Id_Menu: 01
Paragraphes :
--- Parag 1 ---
Titre: Titre 1
texte: Ceci est le Texte 1 du menu 01: blablabla

--- Menu 2 ---
Id_Menu: 02
Paragraphes :
--- Parag 1 ---
Titre: Titre 1
texte: Ceci est le Texte 1 du menu 02: blablabla
--- Parag 2 ---
Titre: Titre 2
texte: Ceci est le Texte 2 du menu 02: blablabla

--- Menu 3 ---
Id_Menu: 08
Paragraphes :
--- Parag 1 ---
Titre: Hébergement
texte: Hébergement du site Web

Nom de domaine

Adresses Mail

Statistiques

Sauvegarde Journalière

Service Maintenance par mail : &lt;b&gt;illimité&lt;/b&gt;
--- Parag 2 ---
Titre: Titre 2
texte: Ceci est le Texte 2 du menu 08: blablabla

3 menus trouvées
-------------------
<b>d'ailleurs à ce propos au départ dans mon fichier XML j'avais mis les balises <Texte> </Texte> </b>pour entourer la "pseudo balise" pour le HTML mais l'affichage du trace mettait les balises ... donc je les ai supprimées...
je ne sais pas si c'est correct, mais bon ... je suis en test alors je teste ...

<b> le but de tout ce blabla </b> j'y arrive :
si je rajoute des images vides (F5) à la suite de mon image 1 qui contient le code AS, j'ai en fait les traces qui se répètent, car normal il boucle à la lecture ... ça c'est bon je comprend le principe
mais mon problème c'est que quand j'insère mon code (sans rien toucher, je laisse les traces pour le moment, je verrais comment alimenter mes zones dynamiques plus tard ...) dans une animation où j'ai des boutons qui font des goto vers d'autres images pour m'afficher les bons textes, eh bien les traces ne s'affichent pas ...
est ce que c'est par ce qu'il n'a pas le temps de lire mon fichier et donc qu'il ne rentre pas dans ma fonction, comment faire donc pour qu'il récupère les infos une fois le fichier chargé ...
bref, j'y comprend que dalle à ce niveau ... et surement dans plein d'autres endroit ... donc soyez indulgents et patients et surtout clairs dans vos explications ...
MERCI !

Commentaire de BlackWizzard le 11/04/2007 20:36:57 administrateur CS

laisse ton image unique avec le code, ne met rien dessus.
Crée un autre layer (calque) et met tes autres images dessus, en faisant attention que l'image qui correspond au code soit étendu à la taille des autres images du calque en dessous.
Je sais pas si je suis clair...
En gros un exemple:
2 calques, 3 images.
Calque du haut: "code"
Calque du bas: "images"
Sur "code", une seule image, qui fait la taille de trois.
Sur "images", trois images, avec tes boutons qui font des gotos.

Commentaire de Rose95 le 12/04/2007 11:48:29

alors je récapitule:
j'ai bien mis mon code sur la 1ère image sur un calque qui ne contient que ça et qui va jusqu'au bout de ma "timeline", je ne sais pas si c'est bien ça les termes, donc ici jusqu'à l'image 90.
j'ai mis sur un autre calque
- un stop sur l'image 10 pour ne pas qu'il fasse la lecture du fichier entier et affiche les différentes pages des différentes menus en bouclant
-et d'autres actions relatives aux menus (nom du menu pour pouvoir faire un goto nomdumenu): à l'image 11, le 1er menu commence, et un stop sur l'image 20, et ainsi de suite pour les autres menus 8 en tout
en dessous les autres calques sont les images des menus
si tu veux je peux t'envoyer mon fla ... ce sera plus simple

Merci d'avance

Commentaire de sanka82 le 11/10/2007 15:56:27

Salut

genial ton code merci!
jai un peu de mal à l'adapter surtout pr afficher une image...
en fait j'aimerai bien afficher une image ds la petite pop up, j'y ai cree un champ txt nomme img (c'est possible d'afficher l'img ds le champ txt ou il faut un autre type de champ?)

voici mon xml

<?xml version="1.0" encoding="UTF-8" ?>

<liste>

<cartefr id="1" nom="Nom du magasin" ville="Ville">
<methode type="087/00.00.00" />
<temps adresse="Rue du paradis,3" />
<img src="mag.gif"/>
<lieu departement="Paris1" numero="75" />
</cartefr>

</liste>


sur la 2eme img cle de la scene je rappelle ma balise img

if (flag) {
i=0;
x = myXML.firstChild;
while (x.childNodes[i] != undefined) {
// L'objet créé pour le tableau va s'appeler 'cartefr',
// qui va etre rempli par rapport à ce qu'il y a dans le XML
var cartefr =  new Object();
cartefr.id = x.childNodes[i].attributes.id;
cartefr.nom = x.childNodes[i].attributes.nom;
cartefr.ville = x.childNodes[i].attributes.ville;
cartefr.methode = x.childNodes[i].childNodes[0].attributes.type;
cartefr.temps = x.childNodes[i].childNodes[1].attributes.adresse;
cartefr.img = x.childNodes[i].childNodes[2].attributes.img;
cartefr.departement = x.childNodes[i].childNodes[3].attributes.departement;
lenumero = x.childNodes[i].childNodes[3].attributes.numero;
// Ca, c'est pour la région parisienne:
// On regroupe tous les départements en un seul (le 75)
if(lenumero==91 || lenumero==92 || lenumero==93 || lenumero==94 || lenumero==95 || lenumero==77 || lenumero==78){
cartefr.numero = 75;
}else{
cartefr.numero = lenumero;
}

// Ca y est! L'objet cartefr est remplie de plein d'infos utiles par la suite,
// maintenant, on le range dans le tableau 'table' avec cette instruction:
table.push(cartefr);
i++;
}
// Une fois terminé, on passe à l'affichage...
play();
}

et sur le clip point j'affiche mon img

stop();
// Voila: rien de compliqué, ni de complexe
titre = ville+" "+nom+"\n("+departement+")";
texte = " "+temps+"\n"+methode;
img = ""+img+"";

merci bcp

Commentaire de BlackWizzard le 11/10/2007 21:03:02 administrateur CS

Pour afficher une image, il faut la charger dans un movieClip. pas dans un textField.

Commentaire de sanka82 le 12/10/2007 15:07:10

j'ai deja essaye...ca marche pas non +! jai p-e fait une erreur quelque part...

myXML.onLoad = function(flag) {
    if (flag) {
i=0;
x = myXML.firstChild;
while (x.childNodes[i] != undefined) {
// L'objet créé pour le tableau va s'appeler 'cartefr',
// qui va etre rempli par rapport à ce qu'il y a dans le XML
var cartefr =  new Object();
cartefr.id = x.childNodes[i].attributes.id;
cartefr.nom = x.childNodes[i].attributes.nom;
cartefr.ville = x.childNodes[i].attributes.ville;
cartefr.methode = x.childNodes[i].childNodes[0].attributes.type;
cartefr.temps = x.childNodes[i].childNodes[1].attributes.adresse;
cartefr.img = x.childNodes[i].childNodes[2].attributes.src;
//img_mc.portePhoto_mc.loadMovie(cartefr.img);
cartefr.departement = x.childNodes[i].childNodes[3].attributes.departement;
lenumero = x.childNodes[i].childNodes[3].attributes.numero;
// Ca, c'est pour la région parisienne:
// On regroupe tous les départements en un seul (le 75)
if(lenumero==91 || lenumero==92 || lenumero==93 || lenumero==94 || lenumero==95 || lenumero==77 || lenumero==78){
cartefr.numero = 75;
}else{
cartefr.numero = lenumero;
}

// Ca y est! L'objet cartefr est remplie de plein d'infos utiles par la suite,
// maintenant, on le range dans le tableau 'table' avec cette instruction:
table.push(cartefr);
i++;
}
// Une fois terminé, on passe à l'affichage...
play();
}


jai cree un clip vide que j'ai nomme portePhoto_mc qd j'ai l'ai glisse ds le clip mc:img

et mon code ds le clip "point"

stop();
// Voila: rien de compliqué, ni de complexe
titre = ville+" "+nom+"\n("+departement+")";
texte = " "+temps+"\n"+methode;
img_mc.portePhoto_mc.loadMovie(cartefr.img);

merci pour tes conseils

Commentaire de nicojet le 19/05/2008 12:26:38

Super, j'ai tout compris en mois d'1 h ! Un grand merci

Commentaire de kdok le 14/03/2009 18:09:51

Merci pour ce tuto très clair.
Comment dois-je faire si je veux que les différentes news se présentent sous forme de tableau (2 lignes, 1 colonnes) au lieu d'être dans un seul bloc de texte?
Est-ce possible (avec une boucle for peut être)?

Merci de ton aide

Commentaire de kdok le 14/03/2009 18:10:39

Pardon je voulais dire 3 colonnes

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales