[Aide] Centrer une image chargée ds un movieclip ->gallerie photo

Résolu
cs_bobota Messages postés 5 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 9 juillet 2005 - 7 juil. 2005 à 12:47
cs_bobota Messages postés 5 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 9 juillet 2005 - 9 juil. 2005 à 18:00
Bonjour à tous

J'ai réussi à peu près ma gallerie photo à partir de source récupéré
ici et là mais le dernier gros probleme ke je n 'arrive pas à régler
est le centrage de l'image en "grand" quand on clique sur les
thumbnails. J'ai failli réussir mais seulement pour certaines images il
faut cliquer 2 fois pour qu'il soit centré.

Une partie du code :



myPhoto = new XML();

myPhoto.ignoreWhite = true;

myPhoto.onLoad = function(success) {

numimages = this.firstChild.childNodes.length;

spacing = 120;

for (i=0; i<numimages; i++) {

picHolder = this.firstChild.childNodes[i];

thumbHolder = thumbnails.createEmptyMovieClip("thumbnail"+i, i);

if (num_col>col-1) {

num_col = 0;

num_ligne++;

}

thumbHolder._x = 12.2 +(num_col*xSpace);

thumbHolder._y = 29 +(num_ligne*ySpace);

num_col++;

thumbLoader = thumbHolder.createEmptyMovieClip("thumbnail_image", 0);

thumbLoader.loadMovie(picHolder.attributes.thmb);

thumbHolder.main = picHolder.attributes.main;

thumbHolder.onRollOver = function () {

this._alpha = 50;

}

thumbHolder.onRollOut = function () {

this._alpha = 100;

}

thumbHolder.onRelease = function() {

loader.loadMovie(this.main);

loader._alpha = 0;

if (loader._width < 350) {

loader._x = 395 + (350 - loader._width)/2;

}

if (loader._width == 350) {

loader._x = 395;

}

if (loader._height < 350) {

loader._y = ((350 - loader._height)/2);

}

if (loader._height == 350) {

loader._y = 150;

}

loader._alpha = 100;

}

}

};

myPhoto.load("beauty.xml");



Sur ma scène, j'ai les MC "thumbnails" (vignettes) et "loader" (là où les grandes images seront chargées).

Mes photos sont de tailles: soit (x<350)*350 soit 350*350 soit
350*(y<350) et j'aimerais pouvoir le centrer entre x=395 et
x=395+350 donc et de même en y.



Une idée?

Merçi d'avance

7 réponses

cs_bobota Messages postés 5 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 9 juillet 2005
9 juil. 2005 à 18:00
J'ai finalement résolu mon problème. Il fallait attendre que l'image soit chargée pour obtenir les bonnes tailles



J'ai rajouté donc une fonction



function preload(clip) {

loader.loadMovie(clip);

var temp = this.createEmptyMovieClip("temp", 9965);

temp.onEnterFrame = function() {


if (loader.getBytesLoaded() == loader.getBytesTotal() &&
loader._width>0 && loader._height>0) {


loader._x = xcenter+
(350-loader._width)/2;


loader._y = ycenter+ (350-loader._height)/2;


delete this.onEnterFrame;

}

};

}que j'appelle sur les thumbnails. Et ça marche! Merçi pour votre aide
3
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
7 juil. 2005 à 13:14
Les multiplications et les divisions sont prioritaires sur les
soustractions et additions...surtout si tu mets des parenthèses...enfin
bref...t'as certainement fait une toute petite erreur en plaçant tes
parenthèses:



myPhoto = new XML();

myPhoto.ignoreWhite = true;

myPhoto.onLoad = function(success) {

numimages = this.firstChild.childNodes.length;

spacing = 120;

for (i=0; i<numimages; i++) {

picHolder = this.firstChild.childNodes[i];

thumbHolder = thumbnails.createEmptyMovieClip("thumbnail"+i, i);

if (num_col>col-1) {

num_col = 0;

num_ligne++;

}

thumbHolder._x = 12.2 +(num_col*xSpace);

thumbHolder._y = 29 +(num_ligne*ySpace);

num_col++;

thumbLoader = thumbHolder.createEmptyMovieClip("thumbnail_image", 0);

thumbLoader.loadMovie(picHolder.attributes.thmb);

thumbHolder.main = picHolder.attributes.main;

thumbHolder.onRollOver = function () {

this._alpha = 50;

}

thumbHolder.onRollOut = function () {

this._alpha = 100;

}

thumbHolder.onRelease = function() {

loader.loadMovie(this.main);

loader._alpha = 0;

if (loader._width < 350) {

//loader._x = 395 + (350 - loader._width)/2; //avant

loader._x = 395 + 350 - loader._width/2; //après

}

if (loader._width == 350) {

loader._x = 395;

}

if (loader._height < 350) {

//loader._y = ((350 - loader._height)/2); //avant

loader._y=350-loader._height/2; //après

}

if (loader._height == 350) {

loader._y = 150;

}

loader._alpha = 100;

}

}

};

myPhoto.load("beauty.xml");



@+! Samy
0
cs_bobota Messages postés 5 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 9 juillet 2005
7 juil. 2005 à 16:01
merci pour cette précision goldenboy. Mais ça ne résout pas mon problème..

Ce qui est bizarre c'est que si je clique 2 fois sur une vignette, la position du loader change 2 fois....

Je vois pas d'où cela peut venir. Et apparemment ma formule n'est pas bonne pourle centrage du loader
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
7 juil. 2005 à 16:24
C'est p-ê le centre de ton clip loader qui n'est pas défini en haut à gauche...à vérifier...car sinon la formule a l'air bonne.



Ensuite pour le clip qui bouge...essaie de réinitialiser la position à chaque clic (genre: loader._x=350; loader._y=350;



@+! Samy
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bobota Messages postés 5 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 9 juillet 2005
7 juil. 2005 à 17:48
vu que je galère beaucoup j'ai mis un trace de la valeur de
loader._width et..surprise! il ne trouve la bonne valeur qu'au bout de
2 cliques.Tous lesproblemes viennent de là.

Je suis en train de voir pourquoi c'est comme ça!
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
8 juil. 2005 à 08:17
vas voir _width et _height pour voir si ça respecte au moins les proportions de ton image



@+! Samy
0
cs_bobota Messages postés 5 Date d'inscription dimanche 29 février 2004 Statut Membre Dernière intervention 9 juillet 2005
8 juil. 2005 à 13:05
width et height correspondent à l 'image mais au bout du 2eme clik
seulement..dc c'est un otal mystère pour moi pourquoi c'est comme
ça.Sinon je vais replonger dans d'autres sources et changer celui que
j'ai.J'en ai un avec des tableaux et le code me semble plus clair donc
vais bosser dessus!
0