begin process at 2012 02 10 14:36:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > NAVIGATION DANS UN FICHIER XML

NAVIGATION DANS UN FICHIER XML


 Information sur la source

Note :
Aucune note
Catégorie :ActionScripts Classé sous :XML, composant List, AS3 Niveau :Initié Date de création :29/01/2010 Date de mise à jour :01/02/2010 09:29:27 Vu / téléchargé :3 414 / 350

Auteur : inaden

Ecrire un message privé
Site perso
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

 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é

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   __MACOSX
  •   tutoXML
    •   org
    •   xml
    • .DS_StoreTélécharger ce fichier [Réservé aux membres club]6 148 octets
    • index.flaTélécharger ce fichier [Réservé aux membres club]1 643 008 octets

Télécharger le zip


 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

Source avec Zip COMMUNICATION CLIP À CLIP AS3
LECTEUR MP3 AVEC PAUSE
Source avec Zip FAIRE GLISSER SELON LA VITESSE DE LA SOURIS

 Sources de la même categorie

Source avec Zip ZOOM SUR UNE IMAGE par yasdar
Source avec Zip Source avec une capture UN PEU DE MATH par yasdar
Source avec Zip Source avec une capture PARTICULE SYSTEM par yasdar
Source avec Zip Source avec une capture GALLERIE PHOTO AVEC XML par yasdar
Source avec Zip Source avec une capture MP3 LAYER NICE &SMALL par yasdar

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture AS3 - PRINCIPE ET APPLICATION DE FONCTION RÉCURSIVE par pegase31
Source avec Zip Source avec une capture UN PEU DE MATH par yasdar
Source avec Zip Source avec une capture AS3 - JEU DU TAQUIN par pegase31
Source avec Zip Source avec une capture PLAYER FLV AS3 - XML par on_drag_on
Source avec Zip Source avec une capture BANNIÈRE AVEC PORTRAITS DÉFILANTS AS3 par barbidouille2

Commentaires et avis

Commentaire de inaden le 29/01/2010 14:30:14

Et puisqu'il n'est pas encore trop tard... Bonne année à tous !

Commentaire de pegase31 le 01/02/2010 15:18:02 administrateur CS

Effectivement, c'est fouillis ....

Pourquoi ne pas avoir fait une classe statique qui gèrerait les infos de ton XML ?
Ca te permettrai de ne faire qu'une seule demande du genre "ListManager.getTitleByArtist("Joe Dassin");" et ça te crache une liste des titres de l'artiste demandé.

Ensuite tu as des doublons de liste .. autant piocher dans le XML directement, car ça t'évite de dupliquer les variables qui y sont déjà.

N'hésite pas à décomposer en classes .. la POO ça sert à ça ;)

Peg'

Commentaire de inaden le 01/02/2010 15:25:51

Et moi qui était tout content !!!
En fait, je croyais avoir créé une classe qui gérait les infos... et contrairement à mes premier pas en XML ou je faisiat des tableaux comportant des objet qui regroupait les données du XML... enfin bref, un truc beaucoup plus compliqué et fouilli encore !
Et c'est quoi une classe statique ???
Bon, je vais retravailler le truc, mais si tu as une piste (tuto, ou autre) merci de me mettre sur la voix !
En tout cas, merci de ton avis et de tes conseils.

Commentaire de inaden le 01/02/2010 15:44:32

Bon, je suis allé voir là http://livedocs.adobe.com/flash/9.0_fr/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts_bak&file=00000779.html
pour comprendre ce qu'est une classe statique... si j'ai bien compris, c'est une classe qui permet d'appeler certains de ses éléments (fonction ou propriété) sans avoir à créer une occurence de la classe.
Certes ! Mais je ne comprends pas bien le rapport avec ce que j'ai fais. Le but est d'appeler l'ensemble des fonctions et propriétés de la classe, pour faire tourner le "menu".
Tout cela est bien compliqué pour un autodidacte !

Commentaire de pegase31 le 01/02/2010 15:49:43 administrateur CS

Une classe statique est comme la classe "Math", par exemple. Elle n'a pas d'instances et ne requiert pas de "new" pour l'appeler.

Il suffit de déclarer tes var/const et fonctions en static, de rendre la classe et ses méthodes publiques et tu peux l'utiliser sans la créer.

Peg'

Commentaire de pegase31 le 01/02/2010 15:51:52 administrateur CS

ça sert à ne pas avoir à mélanger les fonctions de tri de ton XML avec les fonctions d'interfaçage de ton menu.
La classe statique ne fera que renvoyer les données du XML, et tu n'auras plus à te soucier de savoir où tu cherches telle ou tel truc dans ton code.

Imagine que tu doives restructurer ton XML et que tu ais tes appels e4x discéminés dans 3500 lignes de code ....

Peg'

Commentaire de inaden le 01/02/2010 15:58:23

Je crois que je commence à saisir... je m'étais même posé le problème de façon intuitive et me disant que ce serait chouette de dissocier le tri de l'affichage... mais cela me paraissait (et me parait encore) compliqué.
Je suis aussi allé voir http://www.bases-as3.fr/index.php/2009/03/14/singleton-actionscript-3 qui me parait plus compréhensible.
Je vais donc essayer de reprendre le code... mais cela me prendra peut-être... quelques mois :-)
Une dernière question.
Pour toi, il y aurais donc deux classes : celles pour le tri et celle pour l'interface. Celle du tri est de type statique, l'autre non ?
En tout cas, merci de ta patience.
D.

Commentaire de pegase31 le 01/02/2010 16:52:25 administrateur CS

là il y a autant de classes que tu veux ... un Sprite étant déjà une classe de base.

Mais ne va pas te compliquer la vie :
- classe statique de tri de XML
- classe dynamique d'interfaçage

Ce sera déjà bien ;)

Peg'

Commentaire de inaden le 01/02/2010 17:33:01

Ok, je vais essayer.
À dans un mois !   :-)

Commentaire de top30 le 01/02/2010 18:15:52

OOOOHH !

Alors on va commencer par le XML.
Trop fouilli. Ta liste est classée par genre.
Si je veux classer par titre ou auteur comment fera-tu ??? Réécrire l'XML ???
Le XML en AS3, c'est PLUS que simple, c'est enfantin regarde:

1/ L'XML:
<?xml version="1.0" encoding="UTF-8"?>
<playlist>
<track>
<category>jazz</category>
<category>pop-rock</category>
<album>The Kicker</album>
<author>Bobby Hutcherson</author>
<title>The Kicker zik</title>
<cover>zik/image/illus0.jpg</cover>
<url>zik/zik0.mp3</url>
<description>Jazz cool. Vive le vibraphone !</description>
</track>
<track>
<category>jazz</category>
<category>blues</category>
<album>Point of View</album>
<author>Dave Hollande</author>
<title>The Balance</title>
<cover>zik/image/illus3.jpg</cover>
<url>zik/zik3.mp3</url>
<description>Du vrai, du bon, de la composition comme on aimerait en voir plus souvent</description>
</track>
<track>
<category>pop-rock</category>
<category>blues</category>
<album>Point of View</album>
<author>Dave Hollande</author>
<title>The Balance</title>
<cover>zik/image/illus3.jpg</cover>
<url>zik/zik3.mp3</url>
<description>Du vrai, du bon, de la composition comme on aimerait en voir plus souvent</description>
</track>
<track>
<category>jazz</category>
<category>blues</category>
<category>pop-rock</category>
<album>Point of View</album>
<author>Dave Hollande</author>
<title>Serenade</title>
<cover>zik/image/illus4.jpg</cover>
<url>zik/zik3.mp3</url>
<description>Et de la vrai balade</description>
</track>
<track>
<category>pop-rock</category>
<album>Across The Universe Of Languages</album>
<author>Be for bang</author>
<author>Beattles</author>
<title>Come together</title>
<cover>zik/image/illus1.jpg</cover>
<url>zik/zik0.mp3</url>
<description>Une reprise des Beatles</description>
</track>
<track>
<category>pop-rock</category>
<album>Catch</album>
<author>Meshuggah</author>
<title>Greed</title>
<cover>zik/image/illus2.jpg</cover>
<url>zik/zik2.mp3</url>
<description>Pour se défouler</description>
</track>
</playlist>

Tu remarqueras que un "track" peut avoir plusieurs genre, comme plusieurs si nécessaire.

Commentaire de inaden le 01/02/2010 18:52:24

Salut Top30,
bon, ok, je suis dans l'impro totale... et merci de ton aide. Donc, si j'ai bien compris, tu mets plusieurs catégorie si un morceau appartient à plusieurs catégories ?
Il va falloir tout revoir... désolé... je commence à avoir honte de ma source ! Peut-être faudrait-il la retirer !

Sinon, juste une question pour Peg... si tu avais la gentillesse d'aller jeter un oeil sur http://inaden.free.fr/load/essai_xml_static.zip juste pour me dire si c'est comme ça qu'il faut commencer pour créer une classe statique. Merci d'avance.

Et à l'occasion, comme je le disais, il faudrait peut-être supprimer cette source qui ne semble pas correcte... je commence à avoir des remords... si ça embrouille, autant annuler !
En tout cas merci à vous.

Commentaire de inaden le 01/02/2010 18:55:16

Oups, j'avais pas vu ta remarque sur le "plusieurs catégorie" !

Commentaire de top30 le 01/02/2010 21:40:31

Prend ton ficher.
Ajoute une "ComboBox" à la bibliothèque.
Attribue la classe "Index" à ton fla.

Contenu de la classe "index":

package{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.URLLoader;
    import fl.controls.List;
import fl.controls.Button;
import fl.controls.ComboBox;
    import fl.data.DataProvider;
//

public class Index
extends Sprite
{

private var __playList :XML = new XML();
private var __conteneur : Sprite = new Sprite;
private var __filtresCB : ComboBox = new ComboBox;
private var __choixCB : ComboBox = new ComboBox;
private var __trackList : List = new List();

public function Index():void{
//
// Pas besoin de garder le loader, ca utilise de la mémore pour rien...
var loader :URLLoader= new URLLoader();
loader.load(new URLRequest("xml/liste.xml"));
loader.addEventListener(Event.COMPLETE, __analyseData );
//
// Liste des filtres..-.
var dpCB :XML= <filtres>
<item><label>Catégorie</label><data>category</data></item>
<item><label>Artiste</label><data>artist</data></item>
<item><label>Album</label><data>album</data></item>
<item><label>Titre</label><data>title</data></item>
<item><label>Année</label><data>year</data></item>
</filtres> ;
//
__filtresCB.setSize(150,22);
__filtresCB.dataProvider= new DataProvider(dpCB);
__filtresCB.prompt= "Voir par..."
__filtresCB.rowCount= 20 ;
__filtresCB.addEventListener(Event.CHANGE,__montrerFiltres );
__conteneur.addChild(__filtresCB );

__trackList.y= 50 ;
__trackList.setSize(150,200) ;
__conteneur.addChild(__trackList ) ;

__choixCB.y= 25 ;
__choixCB.setSize(150,22) ;
__choixCB.rowCount= 20 ;
__choixCB.addEventListener(Event.CHANGE,__montrerChoix );
}
//

private function __analyseData( eventObj:Event ):void {
__playList= new XML(eventObj.currentTarget.data);
addChild(__conteneur ) ;
}
//

private function __montrerFiltres( $e:Event ):void{
__trackList.dataProvider= new DataProvider();
// Vide la liste actuelle...

var filtre :String= $e.target.selectedItem.data ;
// Le filtre choissi par l'utilisateur...

var liste :XMLList ;
var tableau :Array= [] ;
var value :String ;
var child :XML ;
var track :XML ;

// Pour tous les noeuds "track" de la liste...
for each( track in __playList.track )
{
// La liste des noeuds ayant le nom demandé (filtre)...
liste= track[filtre].children();

// Pour chaque noeud de la liste (au sein de track)
// On vérifie qu'il se soit pas déjà dans le tableau
for each( child in liste )
{
// SI N'EST PAS DANS LA LISTE L'AJOUTER:
// Utilisé un "string" et non un XML, car sinon Flash considera
// chaque XMl comme différent même si leur contenu est absolument identique...
value= child ;
if( tableau.indexOf(value)==-1 ) tableau.push(value);
}
}
__choixCB.dataProvider= __tableauEnProvider(tableau);
if(__choixCB.stage==null ) __conteneur.addChild(__choixCB ) ;
}
//

private function __montrerChoix( $e:Event ):void{
var filtre :String= __filtresCB.selectedItem.data ;
var choix :String= $e.target.selectedItem.data ;
// On recommence mais avec le nouveau choix et sans enlever les doubles
// Car on souhaite voir TOUTES les chansons du même filtre...

var selection :XML= <selection/> ;
var tableau :Array= [] ;
var value :String ;
var child :XML ;
var track :XML ;

// Pour tous les noeuds "track" de la lite...
for each( track in __playList.track )
{
// La liste des noeuds ayant le nom demandé (filtre)...
if( __aNoeud(track,filtre,choix) ) selection.appendChild( track.copy() );
}
__trackList.dataProvider= __listeEnProvider( selection.track ) ;
}
//

private static function __tableauEnProvider( tableau:Array ):DataProvider{
var element :String ;
var dp :DataProvider= new DataProvider() ;
for each( element in tableau ) dp.addItem( {label:element,data:element} );
return dp ;
}
//

private static function __listeEnProvider( liste:XMLList ):DataProvider{
var element :XML ;
var dp :DataProvider= new DataProvider() ;
for each( element in liste ){
trace( element );
dp.addItem( {label:element.title,data:element} );
}
return dp ;
}
//

private static function __aNoeud( track:XML, name:String, value:String ):Boolean{
var liste :XMLList= track.child(name);
if( liste.length()==0 ) return false ;
//
var noeud :XML ;
for each( noeud in liste ) if ( noeud.text()[0]==value) return true ;
return false ;
}
}
}
Et voila...

Commentaire de top30 le 02/02/2010 02:24:47

Une classe static est unobjet qui ne possède aucune référence interne.
L'usage d'un "this" n'est pas possible.

Qund tu créer une classe si la fonction n'as pas besoin de référence propre à l'objet. C'est a dire qu'elle n'utilise que des référerences externes arguments, variables locales, etc.. Alors il est préférable de la passer en static. Comme dans mon exemple ci-dessus "__aNoeud()".

Commentaire de inaden le 02/02/2010 09:29:59

Ouahhhh ! Mille merci pour tout cela. Je viens de regarder (copie colle avec l'exemple de xml que tu m'as donné et c'est génial ! J'étais en train d'essayer de me faire une interface qui recensait dessin et tableaux que j'ai fais, mais comme tu me le faisais remarquer, j'avais un gros problème pour le tri (vue la tronche de mon xml). Ce qui fais que j'avançais à reculons. C'est pas une porte que tu m'as ouvert... c'est un monde nouveau !
Merci d'avoir pris autant de temps pour m'expliquer la "chose". Si je peux te rendre la pareille (bon pas en as c'est sur), je suis à ton service.
Merci à vous deux pour votre attention.

Commentaire de inaden le 02/02/2010 09:49:04

Et pour ceux qui comme moi copie-collerons humblement le code... il y a juste une petite faute :
dans les filtres artist doit être remplacé par author
C'est génial !, Un peu comme noël en juillet !

 Ajouter un commentaire


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


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,108 sec (3)

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