Accueil > > > NAVIGATION DANS UN FICHIER XML
NAVIGATION DANS UN FICHIER XML
Information sur la source
Description
Le but est de naviguer dans un fichier XML (façon playliste) dont on connait la structure mais dont on ne connait pas le contenu... ce qui m'a poser jusqu'ici beaucoup de problème ; problème a priori résolu. Vous pourrez en fin de code attribuer la fonction que vous voulez.
Source
- package org{
- /**********************************************************************************************************************************************\
- \ I M P O R T /
- / \
- \**********************************************************************************************************************************************/
- // --------------- >>> DISPLAY
- import flash.display.Sprite;
- // --------------- >>> EVENT
- import flash.events.Event;
- import flash.events.MouseEvent;
- // --------------- >>> NET
- import flash.net.URLRequest;
- import flash.net.URLLoader;
- // --------------- >>> CONTROLS / DATA
- import fl.controls.List;
- import fl.controls.Button;
- import fl.data.DataProvider;
-
- public class NavXml extends Sprite {
- /**********************************************************************************************************************************************\
- \ V A R I A B L E S /
- / \
- \**********************************************************************************************************************************************/
- // --------------- >>> --------------- >>> V A R I A B L E S D U X M L !
- //-------------------------------------------------------------------------------------------------- !
- public var XMLLoader:URLLoader = new URLLoader();
- public var languageXML:XML = new XML();
- public var listeXML : XMLList;
- // tableau permettant de mettre en place le nombre de catégorie même si on ne le connait pas
- public var categorie : Array = new Array()
- public var nbreCategorie : int = new int();
- // --------------- >>> --------------- >>> V A R I A B L E S D ' A F F I C H A G E !
- //------------------------------------------------------------------------------------------------------------ !
- public var globalLecteur : Sprite = new Sprite;//sprite qui portera les éléments d'affichage
- public var conteneurListe : List = new List();//composant List pour naviguer dans le xml
- //série de outon permettant le retour au niveau précédent
- public var retourCategorie : Button = new Button();
- public var retourArtiste : Button = new Button();
- public var retourAlbum : Button = new Button();
- //variable permettant de savoir à quel niveau de choix on est
- public var niveau : int = 0;
- //variable permettant de stoker le genre par son identifiant pour naviguer ensuite dans le XML
- public var numGenre : int;
- //variable permettant de stoker l'artiste par son identifiant pour naviguer ensuite dans le XML
- public var numArtiste : int;
- //variable permettant de stoker l'album par son identifiant pour naviguer ensuite dans le XML
- public var numAlbum : int;
- /**********************************************************************************************************************************************\
- \ F O N C T I O N S /
- / \
- \**********************************************************************************************************************************************/
- // --------------- >>> --------------- >>> F O N C T I O N S D E T R A I T T E M E N T X M L !
- //-------------------------------------------------------------------------------------------------------------------------- !
- public function NavXml(){
- //appel du XML
- XMLLoader.load(new URLRequest("xml/liste.xml"));
- XMLLoader.addEventListener(Event.COMPLETE, completXML);
- }
- private function completXML(eventObj:Event):void {
- //trace("!!! completeHandlerArr >> lance XML !!!");
- languageXML = new XML(eventObj.currentTarget.data);
- //trace("languageXML = "+languageXML);// --> renvoie le xml entier
- listeXML = languageXML.children();
- // pour déterminer le nbre de catégorie on utilisse la boucle ci-dessous... ne me demander pas comment j'en suis arrivé là !
- for ( var item in listeXML){
- trace("item = "+item);
- var dp:Array = new Array();
- dp.push(item);
- }
- //détermination du nbre de catégorie
- nbreCategorie = dp.length + 1;
- //trace("nbreCategorie = "+nbreCategorie);
- miseEnPlace();
- }
- private function miseEnPlace() : void {
- //affichage du sprite
- addChild(globalLecteur);
- globalLecteur.x = 100;
- globalLecteur.y = 10;
- //affichage du composant List
- globalLecteur.addChild(conteneurListe);
- // !!! listeXML[i].@id -- > renvoie les intitulé de l'identifiant des genres (catégorie)
- for (var i : int = 0; i < nbreCategorie; i++) {
- //on prend le nom (id de la balise xml) et on lui attribue un identifiant
- //on rentre les catégories dans le tableau categorie
- categorie.push({label:listeXML[i].@id , id : i});
- }
- //on interdit la sélection multiple
- conteneurListe.allowMultipleSelection = false;
- //on remplit le composant
- conteneurListe.dataProvider = new DataProvider(categorie);
- conteneurListe.addEventListener(Event.CHANGE, choix);
- }
- private function choix(pEvt : Event):void{
- //trace(" - - - - - - - - - - - - > > CHOIX CATÉGORIE");
- //trace("pEvt.target = "+pEvt.currentTarget.selectedItem.id);
- //on supprime l'écouteur
- conteneurListe.removeEventListener(Event.CHANGE, choix);
- //on met "niveau" sur 1 pour savoir ou l'on est --> cela servira pour les bouton de retour à savoir les éouteur qu'il faudra annuler
- niveau = 1;
- //on met en stock le numéro (id) du genre selectionné
- numGenre = pEvt.currentTarget.selectedItem.id;
- //on place un bouton de retour au catégorie
- globalLecteur.addChild(retourCategorie);
- retourCategorie.label = "retour catégorie";
- retourCategorie.x = 0;
- retourCategorie.y = 120;
- retourCategorie.addEventListener(MouseEvent.CLICK , retourCat);
- //on met en place l'affichage des artistes de la catégorie
- //on crée un nouveau xml relatif à l'identifiant (pEvt.currentTarget.selectedItem.id) de la selection
- var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[pEvt.currentTarget.selectedItem.id].@id));
- //trace("XMLTrans = "+XMLTrans);
- var XMLListeTrans:XMLList = XMLTrans.children();
- var limite : int = XMLListeTrans.length();// renvoie le nombre de référence total
- //trace("limite = "+limite);
- var dp:Array = new Array();
- for (var i : int = 0; i < limite; i++) {
- dp.push({label:XMLListeTrans[i].@id , id : i});
- // dp.push({label:artiste.children()[i].@id , id : i}); --> renvoie les morceau
- }
- conteneurListe.allowMultipleSelection = false;
- conteneurListe.dataProvider = new DataProvider(dp);
- conteneurListe.addEventListener(Event.CHANGE, choixArtiste);
- }
- private function choixArtiste(pEvt : Event):void{
- trace(" - - - - - - - - - - - - > > CHOIX ARTISTE");
- //trace("pEvt.target = "+pEvt.currentTarget.selectedItem.id);
- //on supprime l'écouteur
- conteneurListe.removeEventListener(Event.CHANGE, choixArtiste);
- //on met "niveau" sur 1 pour savoir ou l'on est --> cela servira pour les bouton de retour à savoir les éouteur qu'il faudra annuler
- niveau = 2;
- //on met en stock le numéro (id) du genre selectionné
- numArtiste = pEvt.currentTarget.selectedItem.id;
- //on place un bouton de retour au catégorie
- globalLecteur.addChild(retourArtiste);
- retourArtiste.label = "retour artistes";
- retourArtiste.x = 0;
- retourArtiste.y = 150;
- retourArtiste.addEventListener(MouseEvent.CLICK , retourArt);
- //var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id));//renvoie tout jazz si jazz sélectionné
- //var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[pEvt.currentTarget.selectedItem.id].@id);// renvoie le nom de l'artiste
- var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[pEvt.currentTarget.selectedItem.id]);//renvoie tout ce qui a trait à l'auteur
- //languageXML.legenre.(@id==listeXML[pEvt.currentTarget.selectedItem.id].@id)
- //trace("XMLTrans = "+XMLTrans);
- var XMLListeTrans:XMLList = XMLTrans.children();
- var limite : int = XMLListeTrans.length();// renvoie le nombre de référence total
- //trace("limite = "+limite);
- var dp:Array = new Array();
- for (var i : int = 0; i < limite; i++) {
- dp.push({label:XMLListeTrans[i].@id , id : i});
- // dp.push({label:artiste.children()[i].@id , id : i}); --> renvoie les morceau
- }
- conteneurListe.allowMultipleSelection = false;
- conteneurListe.dataProvider = new DataProvider(dp);
- conteneurListe.addEventListener(Event.CHANGE, choixAlbum);
- }
- private function choixAlbum(pEvt : Event):void{
- trace(" - - - - - - - - - - - - > > CHOIX ALBUM");
- //trace("pEvt.target = "+pEvt.currentTarget.selectedItem.id);
- //on supprime l'écouteur
- conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
- //on met "niveau" sur 1 pour savoir ou l'on est --> cela servira pour les bouton de retour à savoir les éouteur qu'il faudra annuler
- niveau = 3;
- //on met en stock le numéro (id) du genre selectionné
- numAlbum = pEvt.currentTarget.selectedItem.id;
- //on place un bouton de retour au catégorie
- globalLecteur.addChild(retourAlbum);
- retourAlbum.label = "retour album";
- retourAlbum.x = 0;
- retourAlbum.y = 180;
- retourAlbum.addEventListener(MouseEvent.CLICK , retourAlb);
- var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste].album[pEvt.currentTarget.selectedItem.id]);//renvoie tout ce qui a trait à l'auteur
- //languageXML.legenre.(@id==listeXML[pEvt.currentTarget.selectedItem.id].@id)
- trace("XMLTrans = "+XMLTrans);
- var XMLListeTrans:XMLList = XMLTrans.children();
- var limite : int = XMLListeTrans.length();// renvoie le nombre de référence total
- trace("limite = "+limite);
- var dp:Array = new Array();
- for (var i : int = 0; i < limite; i++) {
- dp.push({label:XMLListeTrans[i].@id , id : i});
- // dp.push({label:artiste.children()[i].@id , id : i}); --> renvoie les morceau
- }
- conteneurListe.allowMultipleSelection = false;
- conteneurListe.dataProvider = new DataProvider(dp);
- conteneurListe.addEventListener(Event.CHANGE, choixMorceau);
- }
- private function choixMorceau(pEvt : Event):void{
- //trace("pEvt.target = "+pEvt.currentTarget.selectedItem.id);
- //ici appel de fonction fonction du morceau choisi
- trace("choixMorceau :: "+languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste].album[numAlbum].titre[pEvt.currentTarget.selectedItem.id]);//renvoie la partie xml entière
- trace("choixMorceau :: titre = "+languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste].album[numAlbum].titre[pEvt.currentTarget.selectedItem.id].@id);
- trace("choixMorceau :: url = "+languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste].album[numAlbum].titre[pEvt.currentTarget.selectedItem.id].morceau);
- //ou bien
- /*var target = languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste].album[numAlbum].titre[pEvt.currentTarget.selectedItem.id];
- trace("choixMorceau :: url = "+target.morceau);*/
- }
-
- // --------------- >>> --------------- >>> F O N C T I O N S D E S B O U T O N S D E R E T O U R !
- //-------------------------------------------------------------------------------------------------------------------------------- !
- //RETOUR AUX CATÉGORIES
- private function retourCat(pEvt : MouseEvent){
- conteneurListe.removeEventListener(Event.CHANGE, choixMorceau);
- trace("retourCat :: niveau = "+niveau);
- //on désactive le bouton
- conteneurListe.removeEventListener(Event.CHANGE, choixArtiste);
- globalLecteur.removeChild(retourCategorie);
- retourCategorie.removeEventListener(MouseEvent.CLICK , retourCat);
- //on teste pour savoir si d'autre bouton sont affichés -- > suppression des boutons d'un niveau supérieur
- if(niveau == 2){
- trace("retourCat :: niveau (2) = "+niveau);
- conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
- retourArtiste.removeEventListener(MouseEvent.CLICK , retourArt);
- globalLecteur.removeChild(retourArtiste);
- }
- else if(niveau == 3){
- trace("retourCat :: niveau (3) = "+niveau);
- retourArtiste.removeEventListener(MouseEvent.CLICK , retourArt);
- globalLecteur.removeChild(retourArtiste);
- conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
- retourAlbum.removeEventListener(MouseEvent.CLICK , retourAlb);
- globalLecteur.removeChild(retourAlbum);
- }
- //on remet le niveau à 0
- niveau = 0;
- //on réatribue les catégories à la List
- conteneurListe.allowMultipleSelection = false;
- conteneurListe.dataProvider = new DataProvider(categorie);
- conteneurListe.addEventListener(Event.CHANGE, choix);
- }
- //RETOUR AUX ARTISTES
- private function retourArt(pEvt : MouseEvent){
- conteneurListe.removeEventListener(Event.CHANGE, choixMorceau);
- //on désactive le bouton
- conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
- retourArtiste.removeEventListener(MouseEvent.CLICK , retourArt);
- globalLecteur.removeChild(retourArtiste);
- if(niveau == 3){
- trace("retourArt :: niveau (3) = "+niveau);
- conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
- retourAlbum.removeEventListener(MouseEvent.CLICK , retourAlb);
- globalLecteur.removeChild(retourAlbum);
- }
- //on remet le niveau à 1
- niveau = 1;
- //on réatribue les artistes.
- var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id));
- //trace("XMLTrans = "+XMLTrans);
- var XMLListeTrans:XMLList = XMLTrans.children();
- var limite : int = XMLListeTrans.length();// renvoie le nombre de référence total
- //trace("limite = "+limite);
- var dp:Array = new Array();
- for (var i : int = 0; i < limite; i++) {
- dp.push({label:XMLListeTrans[i].@id , id : i});
- // dp.push({label:artiste.children()[i].@id , id : i}); --> renvoie les morceau
- }
- conteneurListe.allowMultipleSelection = false;
- conteneurListe.dataProvider = new DataProvider(dp);
- conteneurListe.addEventListener(Event.CHANGE, choixArtiste);
- }
- //RETOUR AUX ALBUMS
- private function retourAlb(pEvt : MouseEvent){
- conteneurListe.removeEventListener(Event.CHANGE, choixMorceau);
- conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
- retourAlbum.removeEventListener(MouseEvent.CLICK , retourAlb);
- globalLecteur.removeChild(retourAlbum);
- var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste]);//renvoie tout ce qui a trait à l'auteur
- //languageXML.legenre.(@id==listeXML[pEvt.currentTarget.selectedItem.id].@id)
- trace("XMLTrans = "+XMLTrans);
- var XMLListeTrans:XMLList = XMLTrans.children();
- var limite : int = XMLListeTrans.length();// renvoie le nombre de référence total
- trace("limite = "+limite);
- var dp:Array = new Array();
- for (var i : int = 0; i < limite; i++) {
- dp.push({label:XMLListeTrans[i].@id , id : i});
- // dp.push({label:artiste.children()[i].@id , id : i}); --> renvoie les morceau
- }
- conteneurListe.allowMultipleSelection = false;
- conteneurListe.dataProvider = new DataProvider(dp);
- conteneurListe.addEventListener(Event.CHANGE, choixAlbum);
- }
- /**********************************************************************************************************************************************\
- \ F I N D U P A C K A G E /
- / \
- \**********************************************************************************************************************************************/
- }
- }
package org{
/**********************************************************************************************************************************************\
\ I M P O R T /
/ \
\**********************************************************************************************************************************************/
// --------------- >>> DISPLAY
import flash.display.Sprite;
// --------------- >>> EVENT
import flash.events.Event;
import flash.events.MouseEvent;
// --------------- >>> NET
import flash.net.URLRequest;
import flash.net.URLLoader;
// --------------- >>> CONTROLS / DATA
import fl.controls.List;
import fl.controls.Button;
import fl.data.DataProvider;
public class NavXml extends Sprite {
/**********************************************************************************************************************************************\
\ V A R I A B L E S /
/ \
\**********************************************************************************************************************************************/
// --------------- >>> --------------- >>> V A R I A B L E S D U X M L !
//-------------------------------------------------------------------------------------------------- !
public var XMLLoader:URLLoader = new URLLoader();
public var languageXML:XML = new XML();
public var listeXML : XMLList;
// tableau permettant de mettre en place le nombre de catégorie même si on ne le connait pas
public var categorie : Array = new Array()
public var nbreCategorie : int = new int();
// --------------- >>> --------------- >>> V A R I A B L E S D ' A F F I C H A G E !
//------------------------------------------------------------------------------------------------------------ !
public var globalLecteur : Sprite = new Sprite;//sprite qui portera les éléments d'affichage
public var conteneurListe : List = new List();//composant List pour naviguer dans le xml
//série de outon permettant le retour au niveau précédent
public var retourCategorie : Button = new Button();
public var retourArtiste : Button = new Button();
public var retourAlbum : Button = new Button();
//variable permettant de savoir à quel niveau de choix on est
public var niveau : int = 0;
//variable permettant de stoker le genre par son identifiant pour naviguer ensuite dans le XML
public var numGenre : int;
//variable permettant de stoker l'artiste par son identifiant pour naviguer ensuite dans le XML
public var numArtiste : int;
//variable permettant de stoker l'album par son identifiant pour naviguer ensuite dans le XML
public var numAlbum : int;
/**********************************************************************************************************************************************\
\ F O N C T I O N S /
/ \
\**********************************************************************************************************************************************/
// --------------- >>> --------------- >>> F O N C T I O N S D E T R A I T T E M E N T X M L !
//-------------------------------------------------------------------------------------------------------------------------- !
public function NavXml(){
//appel du XML
XMLLoader.load(new URLRequest("xml/liste.xml"));
XMLLoader.addEventListener(Event.COMPLETE, completXML);
}
private function completXML(eventObj:Event):void {
//trace("!!! completeHandlerArr >> lance XML !!!");
languageXML = new XML(eventObj.currentTarget.data);
//trace("languageXML = "+languageXML);// --> renvoie le xml entier
listeXML = languageXML.children();
// pour déterminer le nbre de catégorie on utilisse la boucle ci-dessous... ne me demander pas comment j'en suis arrivé là !
for ( var item in listeXML){
trace("item = "+item);
var dp:Array = new Array();
dp.push(item);
}
//détermination du nbre de catégorie
nbreCategorie = dp.length + 1;
//trace("nbreCategorie = "+nbreCategorie);
miseEnPlace();
}
private function miseEnPlace() : void {
//affichage du sprite
addChild(globalLecteur);
globalLecteur.x = 100;
globalLecteur.y = 10;
//affichage du composant List
globalLecteur.addChild(conteneurListe);
// !!! listeXML[i].@id -- > renvoie les intitulé de l'identifiant des genres (catégorie)
for (var i : int = 0; i < nbreCategorie; i++) {
//on prend le nom (id de la balise xml) et on lui attribue un identifiant
//on rentre les catégories dans le tableau categorie
categorie.push({label:listeXML[i].@id , id : i});
}
//on interdit la sélection multiple
conteneurListe.allowMultipleSelection = false;
//on remplit le composant
conteneurListe.dataProvider = new DataProvider(categorie);
conteneurListe.addEventListener(Event.CHANGE, choix);
}
private function choix(pEvt : Event):void{
//trace(" - - - - - - - - - - - - > > CHOIX CATÉGORIE");
//trace("pEvt.target = "+pEvt.currentTarget.selectedItem.id);
//on supprime l'écouteur
conteneurListe.removeEventListener(Event.CHANGE, choix);
//on met "niveau" sur 1 pour savoir ou l'on est --> cela servira pour les bouton de retour à savoir les éouteur qu'il faudra annuler
niveau = 1;
//on met en stock le numéro (id) du genre selectionné
numGenre = pEvt.currentTarget.selectedItem.id;
//on place un bouton de retour au catégorie
globalLecteur.addChild(retourCategorie);
retourCategorie.label = "retour catégorie";
retourCategorie.x = 0;
retourCategorie.y = 120;
retourCategorie.addEventListener(MouseEvent.CLICK , retourCat);
//on met en place l'affichage des artistes de la catégorie
//on crée un nouveau xml relatif à l'identifiant (pEvt.currentTarget.selectedItem.id) de la selection
var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[pEvt.currentTarget.selectedItem.id].@id));
//trace("XMLTrans = "+XMLTrans);
var XMLListeTrans:XMLList = XMLTrans.children();
var limite : int = XMLListeTrans.length();// renvoie le nombre de référence total
//trace("limite = "+limite);
var dp:Array = new Array();
for (var i : int = 0; i < limite; i++) {
dp.push({label:XMLListeTrans[i].@id , id : i});
// dp.push({label:artiste.children()[i].@id , id : i}); --> renvoie les morceau
}
conteneurListe.allowMultipleSelection = false;
conteneurListe.dataProvider = new DataProvider(dp);
conteneurListe.addEventListener(Event.CHANGE, choixArtiste);
}
private function choixArtiste(pEvt : Event):void{
trace(" - - - - - - - - - - - - > > CHOIX ARTISTE");
//trace("pEvt.target = "+pEvt.currentTarget.selectedItem.id);
//on supprime l'écouteur
conteneurListe.removeEventListener(Event.CHANGE, choixArtiste);
//on met "niveau" sur 1 pour savoir ou l'on est --> cela servira pour les bouton de retour à savoir les éouteur qu'il faudra annuler
niveau = 2;
//on met en stock le numéro (id) du genre selectionné
numArtiste = pEvt.currentTarget.selectedItem.id;
//on place un bouton de retour au catégorie
globalLecteur.addChild(retourArtiste);
retourArtiste.label = "retour artistes";
retourArtiste.x = 0;
retourArtiste.y = 150;
retourArtiste.addEventListener(MouseEvent.CLICK , retourArt);
//var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id));//renvoie tout jazz si jazz sélectionné
//var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[pEvt.currentTarget.selectedItem.id].@id);// renvoie le nom de l'artiste
var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[pEvt.currentTarget.selectedItem.id]);//renvoie tout ce qui a trait à l'auteur
//languageXML.legenre.(@id==listeXML[pEvt.currentTarget.selectedItem.id].@id)
//trace("XMLTrans = "+XMLTrans);
var XMLListeTrans:XMLList = XMLTrans.children();
var limite : int = XMLListeTrans.length();// renvoie le nombre de référence total
//trace("limite = "+limite);
var dp:Array = new Array();
for (var i : int = 0; i < limite; i++) {
dp.push({label:XMLListeTrans[i].@id , id : i});
// dp.push({label:artiste.children()[i].@id , id : i}); --> renvoie les morceau
}
conteneurListe.allowMultipleSelection = false;
conteneurListe.dataProvider = new DataProvider(dp);
conteneurListe.addEventListener(Event.CHANGE, choixAlbum);
}
private function choixAlbum(pEvt : Event):void{
trace(" - - - - - - - - - - - - > > CHOIX ALBUM");
//trace("pEvt.target = "+pEvt.currentTarget.selectedItem.id);
//on supprime l'écouteur
conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
//on met "niveau" sur 1 pour savoir ou l'on est --> cela servira pour les bouton de retour à savoir les éouteur qu'il faudra annuler
niveau = 3;
//on met en stock le numéro (id) du genre selectionné
numAlbum = pEvt.currentTarget.selectedItem.id;
//on place un bouton de retour au catégorie
globalLecteur.addChild(retourAlbum);
retourAlbum.label = "retour album";
retourAlbum.x = 0;
retourAlbum.y = 180;
retourAlbum.addEventListener(MouseEvent.CLICK , retourAlb);
var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste].album[pEvt.currentTarget.selectedItem.id]);//renvoie tout ce qui a trait à l'auteur
//languageXML.legenre.(@id==listeXML[pEvt.currentTarget.selectedItem.id].@id)
trace("XMLTrans = "+XMLTrans);
var XMLListeTrans:XMLList = XMLTrans.children();
var limite : int = XMLListeTrans.length();// renvoie le nombre de référence total
trace("limite = "+limite);
var dp:Array = new Array();
for (var i : int = 0; i < limite; i++) {
dp.push({label:XMLListeTrans[i].@id , id : i});
// dp.push({label:artiste.children()[i].@id , id : i}); --> renvoie les morceau
}
conteneurListe.allowMultipleSelection = false;
conteneurListe.dataProvider = new DataProvider(dp);
conteneurListe.addEventListener(Event.CHANGE, choixMorceau);
}
private function choixMorceau(pEvt : Event):void{
//trace("pEvt.target = "+pEvt.currentTarget.selectedItem.id);
//ici appel de fonction fonction du morceau choisi
trace("choixMorceau :: "+languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste].album[numAlbum].titre[pEvt.currentTarget.selectedItem.id]);//renvoie la partie xml entière
trace("choixMorceau :: titre = "+languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste].album[numAlbum].titre[pEvt.currentTarget.selectedItem.id].@id);
trace("choixMorceau :: url = "+languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste].album[numAlbum].titre[pEvt.currentTarget.selectedItem.id].morceau);
//ou bien
/*var target = languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste].album[numAlbum].titre[pEvt.currentTarget.selectedItem.id];
trace("choixMorceau :: url = "+target.morceau);*/
}
// --------------- >>> --------------- >>> F O N C T I O N S D E S B O U T O N S D E R E T O U R !
//-------------------------------------------------------------------------------------------------------------------------------- !
//RETOUR AUX CATÉGORIES
private function retourCat(pEvt : MouseEvent){
conteneurListe.removeEventListener(Event.CHANGE, choixMorceau);
trace("retourCat :: niveau = "+niveau);
//on désactive le bouton
conteneurListe.removeEventListener(Event.CHANGE, choixArtiste);
globalLecteur.removeChild(retourCategorie);
retourCategorie.removeEventListener(MouseEvent.CLICK , retourCat);
//on teste pour savoir si d'autre bouton sont affichés -- > suppression des boutons d'un niveau supérieur
if(niveau == 2){
trace("retourCat :: niveau (2) = "+niveau);
conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
retourArtiste.removeEventListener(MouseEvent.CLICK , retourArt);
globalLecteur.removeChild(retourArtiste);
}
else if(niveau == 3){
trace("retourCat :: niveau (3) = "+niveau);
retourArtiste.removeEventListener(MouseEvent.CLICK , retourArt);
globalLecteur.removeChild(retourArtiste);
conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
retourAlbum.removeEventListener(MouseEvent.CLICK , retourAlb);
globalLecteur.removeChild(retourAlbum);
}
//on remet le niveau à 0
niveau = 0;
//on réatribue les catégories à la List
conteneurListe.allowMultipleSelection = false;
conteneurListe.dataProvider = new DataProvider(categorie);
conteneurListe.addEventListener(Event.CHANGE, choix);
}
//RETOUR AUX ARTISTES
private function retourArt(pEvt : MouseEvent){
conteneurListe.removeEventListener(Event.CHANGE, choixMorceau);
//on désactive le bouton
conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
retourArtiste.removeEventListener(MouseEvent.CLICK , retourArt);
globalLecteur.removeChild(retourArtiste);
if(niveau == 3){
trace("retourArt :: niveau (3) = "+niveau);
conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
retourAlbum.removeEventListener(MouseEvent.CLICK , retourAlb);
globalLecteur.removeChild(retourAlbum);
}
//on remet le niveau à 1
niveau = 1;
//on réatribue les artistes.
var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id));
//trace("XMLTrans = "+XMLTrans);
var XMLListeTrans:XMLList = XMLTrans.children();
var limite : int = XMLListeTrans.length();// renvoie le nombre de référence total
//trace("limite = "+limite);
var dp:Array = new Array();
for (var i : int = 0; i < limite; i++) {
dp.push({label:XMLListeTrans[i].@id , id : i});
// dp.push({label:artiste.children()[i].@id , id : i}); --> renvoie les morceau
}
conteneurListe.allowMultipleSelection = false;
conteneurListe.dataProvider = new DataProvider(dp);
conteneurListe.addEventListener(Event.CHANGE, choixArtiste);
}
//RETOUR AUX ALBUMS
private function retourAlb(pEvt : MouseEvent){
conteneurListe.removeEventListener(Event.CHANGE, choixMorceau);
conteneurListe.removeEventListener(Event.CHANGE, choixAlbum);
retourAlbum.removeEventListener(MouseEvent.CLICK , retourAlb);
globalLecteur.removeChild(retourAlbum);
var XMLTrans = new XML(languageXML.legenre.(@id==listeXML[numGenre].@id).auteur[numArtiste]);//renvoie tout ce qui a trait à l'auteur
//languageXML.legenre.(@id==listeXML[pEvt.currentTarget.selectedItem.id].@id)
trace("XMLTrans = "+XMLTrans);
var XMLListeTrans:XMLList = XMLTrans.children();
var limite : int = XMLListeTrans.length();// renvoie le nombre de référence total
trace("limite = "+limite);
var dp:Array = new Array();
for (var i : int = 0; i < limite; i++) {
dp.push({label:XMLListeTrans[i].@id , id : i});
// dp.push({label:artiste.children()[i].@id , id : i}); --> renvoie les morceau
}
conteneurListe.allowMultipleSelection = false;
conteneurListe.dataProvider = new DataProvider(dp);
conteneurListe.addEventListener(Event.CHANGE, choixAlbum);
}
/**********************************************************************************************************************************************\
\ F I N D U P A C K A G E /
/ \
\**********************************************************************************************************************************************/
}
}
Conclusion
Il est tout à fait possible que ma source soit optimisable... je serais d'ailleurs heureux si certains ont des idées. Bien sur le code est valable pour la forme de xml que j'ai utilisé, mais je pense qu'il serait facile de l'adapter pour d'autres formes. J'espère que cela aidera certains comme cela m'a aidé
Historique
- 29 janvier 2010 16:37:14 :
- Un petit oubli :
la deconnexion de la fonction finale lorsque l'on reparcourt le xml (
conteneurListe.removeEventListener(Event.CHANGE, choixMorceau);)
Voili voilou
- 01 février 2010 09:29:28 :
- Me suis trompé de catégorie !
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
AS3 importer une commande AS depuis un XML [ par ourso ]
Bonjour une petite question, qui me pose toujours un problème.J'ai besoin d'inclure quelques commandes pour le lancement d'une appli dans une balise X
Imprimer un contenu XML en AS3 [ par pax_05 ]
Bonjour à tous,J'ai réalisé un applic pour l'école qui charge des données d'un fichier XML. J'aimerais pouvoir imprimer des textes qui sont placés dan
Imprimer un contenu XML en AS3 [ par pax_05 ]
Bonjour à tous,J'ai réalisé un applic pour l'école qui charge des données d'un fichier XML. J'aimerais pouvoir imprimer des textes qui sont placés dan
XML avec AS3 [ par jno123 ]
Bonjour, je viens vers vous afin de trouver une solution à mon problème dans Flash CS3 -> AS3. - J'utilise un fichier xml pour charger des infos dans
Affichage XML avec AS3 [ par Guerrilla ]
Bonjour à tous, Je souhaite faire un simple affichage de contenu XML dans mon animation, le problème c'est que il n'y a que la première entrée qui s'a
AS3 forcer le chargement d'un XML depuis le dossier contenant le SWF [ par guiyem ]
Je cherche un moyen (en AS3) de forcer un swf à charger un fichier XML depuis le dossier contenant le swf et non depuis le dossier contenant le script
Charger un xml dans uns swf en as3 [ par trek9505 ]
Bonjour, J'ai fait quelque recherche, mais je n'arrive pas à trouver comment charger un fichier xml dans un swf en as3 si quelqu'un pouvait m'éclaire
Lien vers un loadmovie clip and le xml: Digicrafts - CurveMenu CS AS3 [ par domlay26 ]
Bonjour, J'ai acheté le module Digicrafts - CurveMenu CS AS3 et j'aimerais savoir si il est possible d'insérer une commande dans le xml qui me permet
flash as3 / php / xml [ par projer ]
Bonjour, j'aurai besoin de récupérer sur un serveur un xml (facile jusque là) pour pouvoir mettre à jour le contenu d'un site. Mais mes connaissances
[AS3] soucis avec un htmlText / XML / CSS [ par goldorius ]
Bonjour à tous, Mon soucis est simple, je charge un contenu textuel dans flash via un xml externe avec css. Tout fonctionne à merveille pour ce qui
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|