Coverflow + MovieClipLoader

BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 - 4 févr. 2010 à 22:39
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 - 6 févr. 2010 à 16:23
Bonsoir à toutes et à tous,

me revoilà encore avec mon coverflow que j'ai décidément bien du mal à modifier :
je suis donc en train de transformer mon coverflow en diaporama, le but étant lors du clic sur une image du coverflow de loader une image externe dont l'url est stocké dans le fichier xml lié au coverflow.
J'ai donc pour cela utilisé la méthode MovieClipLoader.
La méthode marche à ravir, seul bémol et pas des moindres : lorsqu'une image est loadée elle occupe la totalité de mon root masquant ainsi tous les autres éléments de mon animation.
Par conséquent le seul et unique problème c'est le redimensionnement de l'image loadée, problème que je n'arrive pas à résoudre car à ma connaissance dans le code que j'ai ajouté, les dimensions de l'image loadée sont définies en fonction du clip conteneur désigné.
bref, voici mon code sur l'action onPress d'une image du coverflow :
img_info.artistLink.onPress = function() {
url = infostruc[current-1].albumLink;
largeur = _root.clip_vide._width
hauteur = _root.clip_vide._height
initx = _root.clip_vide._x
inity = _root.clip_vide._y
listener = new Object();
listener.onLoadProgress = function(mc, bl, bt) {
pourcent = Math.round(100*bl/bt);
barre._xscale = pourcent
};
listener.onLoadInit = function(mc){
//on redimensionne l'image en largeur
mc._width = largeur
mc._yscale = mc._xscale
//si la nouvelle taille est trop grande en hauteur
//on redimensionne en hauteur
if(mc._height>hauteur){
mc._height = hauteur
mc._xscale = mc._yscale
}
mc._x = initx+(largeur-mc._width)/2
mc._y = inity+(largeur-mc._height)/2
}
mcl = new MovieClipLoader();
mcl.addListener(listener);
mcl.loadClip(url, clip-vide);
trace(_root.clip_vide._width);
trace(_root.clip_vide._height);
}


Le trace de mon clip_vide indique en l'occurrence les dimensions de ce dernier sur mon root, à savoir 500 en largeur par 400 en hauteur, ce qui me conforte dans l'idée que le ciblage de mon clip_vide est bon, donc ce qui m'ennuie surtout c'est que du coup je ne vois pas où ça coince pour redimensionner l'image loadée à a taille de mon clip_vide.

Je présume que la solution à ce problème nécessite une modification des plus simples, mais sur ce coup-là je reste en plan.
Je continue donc à chercher, mais ne suis pas contre un coup de pouce.

Merci,

BBFUNK01

3 réponses

WhiteMagus Messages postés 764 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 5 février 2010
5 févr. 2010 à 10:54
Hello.
Essaie de redimensionner l'image une fois affichée seulement (avec onLoadComplete).
Ça devrait marcher ainsi. Pense à bien cibler le clip chargé, aussi.
Bye
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
5 févr. 2010 à 11:26
Salut WhiteMagus,

oui effectivement pour le ciblage peut-être que
mcl.loadClip(url, _root.clip-vide);
serait plus correct (sachant que le coverflow est dans un clip sur la scène, et que "clip_vide" est un cip lui aussi sur la scène.
Je vais essayer avec onLoadComplete pour voir si ça change quelque chose.
Ce qui me parait bizarre c'est que lorsque je définis dans la fonction "clip_vide" ou bien que je mette "_root.clip_vide" ça me donne le même résultat lorsque je charge mon image.
M'enfin je vais regarder du côté de onLoadComplete, verdict ce soir ou demain.

Merci WhiteMagus,

BBFUNK01
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
6 févr. 2010 à 16:23
Salut WhiteMagus,

j'ai testé comme tu me l'as indiqué en mettant la gestion du redimensionnement de l'image loadée ainsi :
listener.onLoadComplete = function(mc){
//on redimensionne l'image en largeur
mc._width = largeur
mc._yscale = mc._xscale
//si la nouvelle taille est trop grande en hauteur
//on redimensionne en hauteur
if(mc._height>hauteur){
mc._height = hauteur
mc._xscale = mc._yscale
}
mc._x = initx+(largeur-mc._width)/2
mc._y = inity+(largeur-mc._height)/2
}


... mais ça ne fonctionne toujours pas, ça me donne le même résultat : l'image est affichée sur toute la surface de ma scène.
Je ne comprend pas...
BBFUNK01
0
Rejoignez-nous