Bonjour Chrys,
Là je suis fatigué. J’ai zappé une étape et j’ai fais 2 erreurs dans le code.
Oui mais je l'ai fais exprès pour voir si tu suis correctement

Comment ça mauvaise fois !!!!!!
De rage et de dépit je viens d'effacer mon message matinal et je recommence entièrement ici. Excuse-moi....
Je résume :
Nous savons maintenant réaliser l'appel d'un texte externe, l'application d'une feuille de style css sur le texte et enfin le chargement d'un fichier externe de type swf, jpg, gif par l'objet MovieClipLoader.
Maintenant il faut répéter x fois les actions précédentes. Pour cela nous allons utiliser les boucles. Une boucle c'est faire les mêmes opérations un nombre de fois x (boucle for) ou faire les mêmes opérations jusqu'à l'obtention d'une condition (boucle while).
Nous allons rencontrer 2 problèmes :
Le premier problème est que nos MC doivent changer de nom. Le premier doit être nommé Album1 le second Album2 etc. Pour cela il faut en plus de la boucle faire appel à la notion de concaténation. La concaténation c'est l'action de mettre bout à bout 2 variables de type caractère.
Exemple :
var nom:String="Dupont";
var prenom:String = "Jean";
//concaténation
trace(nom+" "+prenom)
//Le résultat affiché est Dupont Jean
Le second c’est que nous sommes en mode asynchrone et donc il faut récupérer nos données textuelles avant de créer les albums. En effet si dans ma boucle j’appelle à chaque passage un fichier texte, je ne récupère que le dernier. Pourquoi ? Parce que mes données arrivent bien plus lentement que ma boucle tourne et donc dans mon objet loadvars chaque fichier texte écrase le précédent avant que je ne l’écrive dans la zone de texte d'ou l'apparition uniquement du dernier descriptif.
Il nous faut dans un premier temps faire 1 fichier texte contenant le descriptif de tous les albums.
Albums=descriptif 1 avec balises html§descriptif 2 avec balise html§descriptif 3 etc.....
Le séparateur entre chaque descriptif est §. Attention il est important car nous allons l'utiliser dans le code pour découper les descriptifs et retrouver celui de chaque album.
L'organisation de nos MC :

Comment faire le code ?
Nous allons scinder notre code sur 2 images clés. Sur la première le MovieClipLoader le chargement de la feuille de style et le LoadVars.
///////////////////////////////////////////////////////////////////////// Chargement fichiers externes
//Création d'une occurrence de l'objet MovieClipLoader pour gestion du chargement JPG, SWF, GIF, PNG
var ChargementFichier:MovieClipLoader = new MovieClipLoader();
/*Création d'un objet d'écoute chargé de nous décrire ce qui se passe pendant le chargement*/
var EcouteurDeChargement:Object = new Object();
//Fonction gérant le début du chargement
EcouteurDeChargement.onLoadStart = function(clipActuel:MovieClip):Void {
//Message ça commence
Alerte.text = "Le chargement débute";
Alerte._visible = true;
};
//Fonction gérant l'arrivée des octets
EcouteurDeChargement.onLoadProgress = function(clipActuel:MovieClip, octetsCharger:Number, totalACharger:Number) {
//Message Déjà disponible
Alerte.text = "Déjà disponible .." + ((Math.round(octetsCharger / 1024) * 100) / 100) + " Ko / " + ((Math.round(totalACharger / 1024) * 100) / 100) + " Ko";
Alerte._visible = true;
};
//Fonction gérant la fin du chargement
EcouteurDeChargement.onLoadComplete = function(clipActuel:MovieClip):Void {
//Message disponible
Alerte.text = "Le fichier est complètement chargé";
Alerte._visible = true;
};
//Fonction gérant l'exécution de la première image de l'élément chargé
EcouteurDeChargement.onLoadInit = function(clipActuel:MovieClip):Void {
Alerte.text = "";
Alerte._visible = false;
switch (clipActuel._name) {
case "PhotoAlbum" :
//A toi de mettre ici les bonnes valeurs
clipActuel._x = 0;
clipActuel._y = 0;
//Taille si besoin ou clipActuel._xscale, clipActuel._yscale à toi de mettre ici les bonnes valeurs
clipActuel._width = 0;
clipActuel._height = 0;
break;
case "TitreAlbum" :
//A toi de mettre ici les bonnes valeurs
clipActuel._x = 0;
clipActuel._y = 0;
//Taille si besoin ou clipActuel._xscale, clipActuel._yscale à toi de mettre ici les bonnes valeurs
clipActuel._width = 0;
clipActuel._height = 0;
break;
}
};
//Fonction gérant les erreurs de chargement
EcouteurDeChargement.onLoadError = function(clipActuel:MovieClip, codeErreur:String, numeroErreur:Number):Void {
Alerte.text = codeErreur + " " + numeroErreur;
Alerte._visible = true;
};
//Activation de l'écouteur de chargement
ChargementFichier.addListener(EcouteurDeChargement);
//Création d'une occurrence de l'objet LoadVars pour réceptionner les données
var lireTexteExterne:LoadVars = new LoadVars();
lireTexteExterne.onLoad = function(disponible:Boolean):Void {
//Si les données sont disponibles
if (disponible) {
/*Découper sur le symbole § et
Répartir dans le tableau les descriptifs description[0] premier album, description[x] x ieme album*/
description = this.Albums.split("§");
//Nous avons la feuille de style et le texte nous pouvons construire nos albums a l'image 2
gotoAndPlay(2);
} else {
//Sinon avertir l'utilisateur
Alerte.text = "Fichier non disponible sur le serveur";
}
};
//importation de la classe externe feuille de style
import TextField.StyleSheet;
//Création d'une occurrence de feuille de style
var Style:StyleSheet = new StyleSheet();
//fonction de chargement de la feuille de style externe
Style.onLoad = function(disponible:Boolean):Void {
if (disponible) {
//Appel des données textuelles externes
lireTexteExterne.load("textes/Album1.txt");
} else {
alerte.text = "La feuille de style n'est pas disponible";
}
};
/////////////////////////////////////// Description ///////////////////////////////////////////////////////
/*Chargement de la feuille de style. Quand elle est disponible chargement des textes de description des albums
quand ils sont disponible passage à l'image suivante pour construire les fiches*/
//Appel de la feuille de style
Style.load("style.css");
//Création du tableau devant recevoir les textes de description de l'album
var description:Array = new Array();
stop();
Sur la seconde image clé la boucle permettant la construction à la volée de nos albums
//Définir le nombre d'album
var totalAlbum:Number = 5;
//Boucle à faire totalAlbum fois
for (var i:Number = 1; i <= totalAlbum; i++) {
//Création du MC Album i en niveau i sur la scène
this.createEmptyMovieClip("Album" + i,i);
//Ici facilité d'écriture remplace this["Album" + i] par une variable
var AlbumActuel:MovieClip = this["Album" + i];
//Création dans le MC Album d'un MC Photo en profondeur 0
AlbumActuel.createEmptyMovieClip("PhotoAlbum",0, 1);
/*Création d'une zone de texte dans album pour recevoir le descriptif de l'album
A toi de mettre ici les bonnes dimensions en fonction de la taille et de la position de l'image de l'album*/
AlbumActuel.createTextField("Descriptif",1,100,0,200,150, 1);
AlbumActuel.Descriptif.multiline = true;
AlbumActuel.Descriptif.html = true;
//j'applique la feuille de style sur du texte qui est forcèment présent
AlbumActuel.Descriptif.styleSheet = Style;
//Je charge dans ma zone de texte le descriptif de l'album i-1 (le tableau description est indicé de 0 a x
AlbumActuel.Descriptif.htmlText = description[i-1];
//Appel au MCL pour charger la photo i de l'album i
ChargementFichier.loadClip("images/Photo" + i + ".jpg",AlbumActuel.PhotoAlbum);
//Position sur la scene de l'album à toi de mettre les bonnes positions
AlbumActuel._x = 0;
//Position verticale de l'album sur la scene : (La hauteur de l'album + espace de x pixel en dessous) * (i-1)
AlbumActuel._y = (100 + 10) * (i - 1);
}
stop();
Une autre solution existe en passant par les fichiers xml au lieu d'un fichier texte. Le reproche que je fais aux fichiers xml c'est que la gestion des nœuds et laborieuse en Flash. T_bo lui pense surement exactement le contraire car les solutions qu’il propose sont à base de xml. Mais bon à chacun sa technique et ses préférences.....