banner

Précédent   InfographiK - Communauté Graphique > FLASH & ACTION SCRIPT > Flash niveau Avancé > Les cours avancés

Réponse
 
LinkBack Outils de la discussion
  #1 (permalink)  
Vieux 24/01/2006, 13h35
Avatar de AlexSmith
Jvousféréver :)
 
Date d'inscription: January 2006
Messages: 63
Bien ! [Tuto MX Pro & 8 Pro] Lecteur RSS/XML

Je ne sais pas si j ai le droit mais je vous colle un article que j ai réalisé pour mon école (mais IL EST DE MOI J INSISTE )

Cette Article présente comment lire un fichier XML .. l utilisation est la meme pour du rss:

Rappel sur le XML

Le langage XML (eXtensible Markup Language) possède un atout qui est d'organiser et de structurer les informations. Cet atout permettra donc lorsque Flash enverra des informations vers un serveur formaté en XML qu'elles soient interprétées comme nous le souhaiterons. A première vue, XML ressemble à l'HTML car tous deux comprennent des balises mais, en fait, ils sont très différents avec XML c'est l'utilisateur (enfin le développeur) qui crée ses propres balises.

Voici un exemple de formatage d'un document XML :

< NoeudRacine>

< NoeudEnfant>Premier< / NoeudEnfant>

< NoeudEnfant>Premier< / NoeudEnfant>

< NoeudEnfant>Premier< / NoeudEnfant>

< /NoeudRacine>

Dans un document XML, on ne peut trouver qu'un unique nœud racine. Ce nœud marque le début et la fin du document.

A l'intérieur de ce nœud, on trouve des nœuds enfants. Dans un document XML, on peut trouver autant de nœud enfant qu'on en a besoin et ces nœuds peuvent être imbriqués. Par exemple d'une manière plus étendue l'exemple précédent pourrait donner :

< NoeudRacine>

< NoeudEnfant>

< DeuxièmeNoeudEnfant>Deuxième< /DeuxièmeNoeudEnfant>

< DeuxièmeNoeudEnfant>Deuxième< /DeuxièmeNoeudEnfant>

< /NoeudEnfant>

< NoeudEnfant>Premier< / NoeudEnfant>

< NoeudEnfant>Premier< /NoeudEnfant>

< /NoeudRacine>



Enfin dans un document XML on peut trouver au niveau d'un nœud enfant des attributs.

Flash // les panneaux nécessaires



Comme nous l'avons vu dans l'introduction, pour ce chapitre nous allons utiliser un fichier XML de sortiraparis (http://webservice.sortiraparis.com/p...der/fluxD1.xml).
Ce fichier, mis à jour tous les matins à 5h (GMT ), référence les 2000 prochains événements à partir de la date du jour. Nous allons dans notre exemple récupérer les 100 prochains événements.

Dans notre animation, nous allons afficher le titre, le type, la date, le prix, l'adresse de l'image et le nom du lieu.

Nous allons créer sur la première image de notre animation 6 champs de texte dynamiques car nous ne créons pas de champ pour l'url de l'image. Chaque zone de texte doit porter un nom de variable, dans notre exemple nous nommons les champs par wordTitre, wordType etc...



A présent, nous pouvons nous intéresser à l'objet xml. Créer un nouveau calque sur votre "timeline", nommez-le "Actions".
ActionScript Code:
  1. XMLId = new Array();
  2. XMLTitre = new Array();
  3. XMLType = new Array();
  4. XMLDesc = new Array();
  5. XMLDate = new Array();
  6. XMLPrix = new Array();
  7. XMLImage = new Array();
  8. XMLLieu = new Array();
  9. xml = new XML();
  10. xml.ignoreWhite = true;
explication :

Ce code permet tout d'abord d'instancier les tableaux qui contiendront les différentes valeurs de notre fichier XML, car dans le cas de l'utilisation de l'objet XML, l'animation flash doit tout d'abord lire le fichier et enregistrer les données que contient ce dernier avant de pouvoir les utiliser.

new Array() crée un nouveau tableau. Par la suite on ajoutera les différentes données dans les tableaux correspondants.

D'autre part, ce code permet de créer un nouvel objet XML nommé "xml". Enfin, la propriété "ignoreWhite" de notre objet XML à true, à savoir que la propriété ignoreWhite de classe XML proposée par flash permet de supprimer les espaces vides dans les noeuds vides.

Le fragment de code suivant correspond au code exécuté par le gestionnaire d'événement onLoad de notre objet XML.
ActionScript Code:
  1. xml.onLoad = function(ok) {
  2.   if (ok = true) {
  3.    
  4.     var contenu = this.firstChild.firstChild;
  5.     var noeudLu = contenu;
  6.  
  7.     for (i = 0; i < 100; i++) {
  8.       switch (noeudLu.nodeName) {
  9.       case "EVENT" :
  10.  
  11.         XMLTitre&#91;i] = noeudLu.firstChild.firstChild.nodeValue;
  12.         XMLId&#91;i] = noeudLu.firstChild.nextSibling.firstChild.nodeValue;
  13.         XMLType&#91;i] = noeudLu.firstChild.nextSibling.nextSibling.firstChild.nodeValue;
  14.         XMLDate&#91;i] = noeudLu.firstChild.nextSibling.nextSibling.nextSibling. firstChild.nodeValue;
  15.         XMLPrix&#91;i] = noeudLu.firstChild.nextSibling.nextSibling.nextSibling. nextSibling.firstChild.nodeValue;
  16.         XMLImage&#91;i] = noeudLu.firstChild.nextSibling.nextSibling.nextSibling. nextSibling.nextSibling.firstChild.nodeValue;
  17.         XMLLieu&#91;i] = noeudLu.firstChild.nextSibling.nextSibling.nextSibling. nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.firstChild.nodeValue;
  18.         cB.addItem({data:&#91;i], label:XMLId[i]+" - "+XMLTitre[i]});
  19.         break;
  20.  
  21.       }
  22.     noeudLu = noeudLu.nextSibling;
  23.     }
  24.   }
  25. };
explication :

onLoad est un gestionnaire d'événements de la classe flash XML, ce gestionnaire est exécuté lorsqu'un document XML est reçu du serveur, s'il se réalise sans problème alors la condition ok est vérifiée et le code inclus dans celle-ci s'exécute.

On crée tout d'abord deux variables, la variable noeudLu contient le premier noeud enfant contenu dans le noeud racine (dans notre cas "EVENTS"). On exécute ensuite une boucle for allant de 0 à 99. A savoir que l'on aurait pu parcourir tout le XML en utilisant la propriété length de la classe XML. On utilise ensuite un switch case qui nous permettra de vérifier que le noeud que l'on va parcourir est un noeud "EVENT" qui contient les données relatives aux événements, cela grâce à la propriété nodeName de la classe XML qui renvoie le nom de noeud.

On insert toutes les données dans les tableaux, par souci de simplicité nous avons utilisé la propriété nextSibling pointe vers le frère suivant dans la liste des enfants du nœud parent. Cette propriété nous permet de passer de frères en frères assez aisément.

Grâce à la méthode addItem de notre composant comboBox, nous allons rajouter les éléments qui nous permettrons par la suite de récupérer les données dans les tableaux. data contient la valeur du i incrémenté par la boucle for, c'est ces valeurs qui nous permettront de récupérer des données. label contient ce qui sera affiché à l'écran (la partie intéractive d'un comboBox).

Enfin on passe au noeud "EVENT" frère suivant avec nextSibbling.
ActionScript Code:
  1. function change(evt){
  2.  _root.wordCat = _root..XMLType&#91;evt.target.selectedItem.data];
  3.  _root.wordDate = _root.XMLDate&#91;evt.target.selectedItem.data];
  4.  _root.wordTitre = _root.XMLTitre&#91;evt.target.selectedItem.data];
  5.  _root.wordLieu = _root.XMLLieu&#91;evt.target.selectedItem.data];
  6.  _root.wordPrix = _root.XMLPrix&#91;evt.target.selectedItem.data];
  7.  loadMovie("http://www.sortiraparis.com/images/sorties/" + _root.XMLImage&#91;evt.target.selectedItem.data], _root.image.mc_image);
  8. }
  9. cB.addEventListener("change", this);
On utilise la méthode addEventListener de notre objet comboBox pour affecter l'événement "change" de cet objet à un objet d'écoute portant le même nom "this".

On déclare la fonction de notre objet d'écoute qui a pour but d'afficher de nouveau résultat lorsque l'on sélectionne un nouvel élément dans notre comboBox. Il fait correspondre nos différents champs de texte dynamiques à une valeur du tableau où l'indice correspond à la valeur (data) de l'élément sélectionné dans notre comboBox.

Enfin on utilise la fonction Flash "loadMovie" qui permet d'importer dans un movieClip conteneur des Jpg ou Swf externes. Dans notre exemple notre movieClip conteneur est image.mc_image.

A présent, nous avons fini, nous n'avons plus qu'à tester notre animation pour voir que celui-ci récupère avec succès le contenu du XML et l'affiche.
Réponse avec citation
Réponse

Outils de la discussion

Règles de messages
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui



Fuseau horaire GMT +2. Il est actuellement 05h51.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0 Tous droits réservés.
Version française #13 par l'association vBulletin francophone

Communauté Graphique
CNIL : 1130886