Je n'arrive pas a centré mon image dans le clip [Résolu]

Messages postés
221
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
22 décembre 2010
- - Dernière réponse : cs_Miss1
Messages postés
221
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
22 décembre 2010
- 2 mai 2007 à 16:18
Bonjour, je debute en flash et surtout en XML.
Je souhaite créer un album photo , pour cela j'ai dans ma page fla crée un clip que j'ai appeler ecran.
Le probleme que j'ai s'est que je n'arrive pas a centrée mon image dans le clip. (Je c'est pas si j'ai était tres explicite)



//declaration XML
photos_xml = new XML();
photos_xml.ignoreWhite = true;
// fonction
photos_xml.onLoad = function(ok)



{
 //initialisation des variables
 if (ok) {
  noeuds = photos_xml.firstChild.childNodes;
  // on se positionne au second niveau
  nbrPhotos = noeuds.length;
  // on récupère le nombre de noeuds à ce niveau
  premierePhoto = this.firstChild.firstChild;
  // on sélectionne le premier noeud
  dernierePhoto = this.firstChild.lastChild;
  // on sélectionne le dernier noeud
  enCours = premierePhoto;
  // enCours correspond au noeud en cours d'affichage
  // ici, la premiere photo sera donc la premiere affichée
  affichePhoto(enCours);
  // on affiche la photo du premier noeud
 }
};
//charegement du fichier XML
photos_xml.load("photos.xml");
// affichage de la photo
function affichePhoto(photo) {
 loadMovie(photo.attributes.fichier, ecran );
 textes = photo.attributes.num + "/" + nbrPhotos + " : " + photo.attributes.desc;
}




 








 






 Miss1
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
212
Date d'inscription
mardi 2 novembre 2004
Statut
Membre
Dernière intervention
12 mai 2008
1
3
Merci
salut,

ton problème vient de là :
    conteneur.Ecran._x = (conteneur._width-conteneur.Ecran._width)/2;
    conteneur.Ecran._y = (conteneur._height-conteneur.Ecran._height)/2;

Tu n'attends pas que ton image soit chargée dans ton clip avant de modifier sa position.
Ton code est lu plus vite que le chargement de ta photo, ce qui veut dire que Flash reçoit donc cette commande :
    conteneur.Ecran._x = (0)/2;
    conteneur.Ecran._y = (0)/2;

Pour être sûr que ton image soit correctement chargée avant d'effectuer des manipulations, tu dois utiliser un MovieClipLoader.
Il y a un tuto ici et dans l'aide aussi, évidemment.

Sinon, il doit y avoir une tonne de question sur ce forum qui parle de ton sujet, ... c'est un problème récurant, donc cherche aussi ici.

--------- Darkrats ---------
la loi est dure mais c'est la loi
 -------- Infograpix --------

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 207 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Darkrats
Messages postés
221
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
22 décembre 2010
0
Merci
Petite correction mais cela ne fonctionne toujour pas

loadMovie(photo.attributes.fichier, Ecran);
là il se passe que photo.attributes.fichier remplace Ecran et prend toutes ses caractéristiques, _x, _y, _rotation etc..
donc,pour cela je dois centrer photo.attributes.fichier dans Ecran, il faut que je  créer un clip vide et le mettre dedans.




//declaration XML
photos_xml = new XML();
photos_xml.ignoreWhite = true;
// fonction
photos_xml.onLoad = function(ok)




{
 //initialisation des variables
 if (ok) {
  noeuds = photos_xml.firstChild.childNodes;
  // on se positionne au second niveau
  nbrPhotos = noeuds.length;
  // on récupère le nombre de noeuds à ce niveau
  premierePhoto = this.firstChild.firstChild;
  // on sélectionne le premier noeud
  dernierePhoto = this.firstChild.lastChild;
  // position de l'image
  
  
  // on sélectionne le dernier noeud
  enCours = premierePhoto;
  // enCours correspond au noeud en cours d'affichage
  // ici, la premiere photo sera donc la premiere affichée
  affichePhoto(enCours);
  // on affiche la photo du premier noeud
 }
};
//charegement du fichier XML
photos_xml.load("photos.xml");
// affichage de la photo
function affichePhoto(photo) {
 loadMovie(photo.attributes.fichier,conteneur.Ecran);


//------------------------------------------------------------------------------
conteneur.Ecran._x = (conteneur._width-conteneur.Ecran._width)/2;
conteneur.Ecran._y = (conteneur._height-conteneur.Ecran._height)/2;


//-----------------------------------------------------------------------------------------
 textes = photo.attributes.num + "/" + nbrPhotos + " : " + photo.attributes.desc;
 
}


 






 






 

Miss1
Commenter la réponse de cs_Miss1
Messages postés
221
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
22 décembre 2010
0
Merci
Donc sa fonctionne pour la 1 er image mais pas pour les autres elle ne se redimensionnne pas et n se place pas dans le clip. Ya des erreur mais je n'arrive pas a l'ai trouver vu que je ne comprend pas totalement se que sa fais

idemn qu'au dessus
................
//charegement du fichier XML
photos_xml.load("photos.xml");
// affichage de la photo
function affichePhoto(photo) {
//là il se passe que photo.attributes.fichier
//remplace Ecran et prend toutes ses caractéristiques, _x, _y, _rotation etc..



//on crée le clip vide dans lequel on va loader notre image (on le nomme container et on lui donne la première profondeur libre)
var conteneur:MovieClip = this.createEmptyMovieClip("container", this.getNextHighestDepth());
//on loade notre image (ou notre swf) dans le clip vide
conteneur.loadMovie(photo.attributes.fichier,conteneur.ecran);
//à chaque fps, un événement enterFrame est déclenché par flash, on définit un écouteur sur cet événement : à chaque fps, le code entre { } va être exécuté (ce qui va nous permettre de tester à chaque passage si le chargement est fini ou pas).
this.onEnterFrame = function():Void { 
//on définit une variable �18;charge�19; dans laquelle on met le nombre de bytes qui ont déjà été chargés par le loadMovie (dans le clip conteneur) 
var total:Number = conteneur.getBytesTotal();
//on définit une variable �18;total�19; dans laquelle on stocke le nombre de bytes total de notre image (ou swf)
var charge:Number = conteneur.getBytesLoaded();
//on calcule le pourcentage chargé (arrondi avec le Math.round) et on le stocke dans la variable �18;pourcent�19;
var pourcent:Number = Math.round(charge/total*100); 
//on teste si le pourcentage = 100 pour savoir si le chargement est terminé
if (pourcent == 100) {  
//si oui, le chargement est fini, on supprime l�19;écouteur pour ne plus exécuter tout ça     
delete this.onEnterFrame;

//je place mon image dans le clip.    
conteneur._x = 133.0;
conteneur._y = 78.0;
//ici je redimensionne les images
conteneur._width = 317.9;
conteneur._height= 256.0;
}else{   
//ici le chargement n�19;est pas terminé, on peut par exemple faire progresser une progressbar (en fonction de la valeur de �18;pourcent�19; pour montrer l�19;avancement du chargement.
}}



 textes = photo.attributes.num + "/" + nbrPhotos + " : " + photo.attributes.desc;
}


Si quelqu'un peut m'expliquer mon erreur et me l'indiquer merci
Commenter la réponse de cs_Miss1