Placer mes movieClip sur la scene

clem037 Messages postés 6 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 22 mars 2009 - 21 janv. 2009 à 18:08
sep2vigne Messages postés 50 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 29 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!!


si qqun pouvait merciii d'avance

clem

1 réponse

sep2vigne Messages postés 50 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 29 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...

quelquechose comme cela :

site_xml.ignoreWhite = true;
site_xml.load("site.xml");
site_xml.onLoad = function(){

site_obj = XmlParser.convertToObject(site_xml);


//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.


var newClipVide:MovieClip = createEmptyMovieClip("image_"+i, newD);
newClipVide.x = newX;
newClipVide.y = newY;
newClipVide.loadMovie(image);
}
};

En ésperant que ça t'aideras,
le sep
0