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

Signaler
Messages postés
5
Date d'inscription
dimanche 29 février 2004
Statut
Membre
Dernière intervention
9 juillet 2005
-
Messages postés
5
Date d'inscription
dimanche 29 février 2004
Statut
Membre
Dernière intervention
9 juillet 2005
-
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

Messages postés
5
Date d'inscription
dimanche 29 février 2004
Statut
Membre
Dernière intervention
9 juillet 2005

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
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
2
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
Messages postés
5
Date d'inscription
dimanche 29 février 2004
Statut
Membre
Dernière intervention
9 juillet 2005

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
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
2
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
Messages postés
5
Date d'inscription
dimanche 29 février 2004
Statut
Membre
Dernière intervention
9 juillet 2005

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!
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
2
vas voir _width et _height pour voir si ça respecte au moins les proportions de ton image



@+! Samy
Messages postés
5
Date d'inscription
dimanche 29 février 2004
Statut
Membre
Dernière intervention
9 juillet 2005

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!