clem037
Messages postés6Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention22 mars 2009
-
21 janv. 2009 à 18:08
sep2vigne
Messages postés50Date d'inscriptionlundi 17 mars 2008StatutMembreDernière intervention29 janvier 2010
-
21 janv. 2009 à 19:12
Bonjour à tous,
J'ai généré un fichier XML avec mon code AS2, ce code "trace" 3
images, et je voudrais que ces images s'affiche les unes à cotés des
autres dans mon swf, or j'ai l'impression qu'elles sont toutes les unes
par dessus les autres!!
Code :
site_xml.load("site.xml");
//
//fonction onLoad
//
site_xml.onLoad = function(){
//converti site_xml en objet
site_obj = XmlParser.convertToObject(site_xml);
rubrique = site_obj.site.rubrique;
//on parcours chaque élément du xml
for (i=0;i<rubrique.length;i++){
//on stocke l'image
image=rubrique[i].image;
trace("Image:"+image);
//invocation fonction
chargerRubrique(image);
}
}
//commande pour ne pas tenir compte des espaces
site_xml.ignoreWhite=true;
//définition de la fonction
function chargerRubrique(image){
// Crée un clip parent pour le conteneur.
this.createEmptyMovieClip("image_mc", this.getNextHighestDepth());
// Charge une image dans image_mc.
image_mc.loadMovie(image);
}
Je pense qu'il faut rajouter une fonction ou un attribut dans la
fonction chargerRubrique(), ou alors faire une boucle mais j'avoue que
je ne sais pas trop comment m'y prendre!!
sep2vigne
Messages postés50Date d'inscriptionlundi 17 mars 2008StatutMembreDernière intervention29 janvier 2010 21 janv. 2009 à 19:12
Salut clem,
Le problème dans ton code :
> tu charges les trois images dans le même emptyMovieClip, aux mêmes coordonées et à la même profondeur.
La solution que je te propose :
> ne pas séparer ton loadMovie de ta boucle de création d'emptyMovieClip pour profiter de cette boucle et indiquer les nouveaux noms, coordonnées, profondeur...
//ici j'indique les coordonnées du point haut gauche de la première image chargée.
//ils servent de ref pour le positionnement des suivantes.
var xOr:Number = 100;
var yOr:Number = 100;
rubrique = site_obj.site.rubrique;
for (i:Number=0;i<rubrique.length;i++){
var image:String =rubrique[i].image;
//ici on calcul les nouvelles positions ainsi que la nouvelle profondeur
//on utilise la variable d'origine xOr à laquelle on ajoute 0*100=0px pour le premier passage, 1*100=100px pour le deuxième ... etc
//si tes images ont toutes les mêmes dimentions, indique leur largeur plutot que 100 (qui n'est qu'un exemple).
//L'idéal étant de récuperer après chargement la taille de l'image loadée afin de définir de combien tu dois décaler les suivantes.
//Le calcul des positions ne se ferait alors pas à ce moment là mais sur l'évenement onLoad de ton loadMovie.
//Tu lirais en effet la valeure _width du clip qui viendrait de loader ton image (tant que l'image n'y est pas ton clip n'a aucune largeure).
//Ici je n'indique pas de nouveau Y, les trois images seront alignées.
//Enfin, et c'est important aussi, on définit la nouvelle profondeure pour ce clip (deux clips ne peuvent pas occuper la même profondeur).
//ton this.getNextHighestDepth() marche aussi ... comme tu préfères
var newX:Number = xOr + ( i * 100 );
var newY:Number = yOr;
var newD:Number = 100 + i;
//on crée donc un un nouveau clip vide à chaque passage, on lui donne un nouveau nom qui dépend de i.
//on le positionne en utilisant les coordonnées calculées précédemment
//enfin on lui indique le chemin de l'image qu'il doit charger.