Chargement dynamique et liens après action

cs_tyler durden Messages postés 5 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 16 décembre 2009 - 23 juil. 2004 à 15:33
cs_tyler durden Messages postés 5 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 16 décembre 2009 - 3 août 2004 à 10:17
Bonjour à tous,
je vous explique rapidos mon problème. Je veux créer une gallerie d'images par thème. 3 thèmes sont disponibles. Les images sont stockées dans un dossier et sont affichées dans le swf via un fichier XML. Les images sont chargées dynamiquement dans des clips. (Ceux-ci sont crées en dupliquant un premier clip sur la scène.) Comme le nombre d'images n'est pas le même pour les 3, ces clips sont supprimés et le nombre de clips dupliqués dépend du nombre de photos à afficher. Lorsque toutes les images sont affichées (en miniature), je voudrai que lors d'un rollover, un aperçu plus gros soit disponible. Puis après un clic, une fenêtre apparaisse avec l'image seule. Le problème est pour la récupération du nom de l'image et donc pour son lien. Je ne sais pas comment faire. J'ai essayé plusieurs solutions trouvées sur les forums, mais vu que je suis "flasheur" que depuis 4 mois en freelance, j'ai pas toujours trop compris.
Pourriez vous m'aider car là je commence à craquer ????
Je vous mets le code .
D'avance merci.

Code développé sous Flash MX 2004:
/*Les fonctions sont crées au début. Elles seront appelées par la suite lors du clic des boutons. La fonction ChargeXML(nomChoix) permet de charger les documents XML suivant le choix du thème.
Elle permet aussi de lancer une barre de chargement.
La fonction effaceMovie permet de supprimer les clips crées pour l'affichage des images, puisque le nombre d'images n'est pas le même
dans les 3 thèmes.
Enfin la fonction affichage() permet de connaitre le nombre de photos à afficher, le nombre de clips à dupliquer, et la façon de les afficher.
Le problème réside dans la création de la fonction Curseur, car je n'arrive pas à récupérer le nom de l'image.
*/
myXML = new XML();
myXML.ignoreWhite = true;

var nomChoix = null; //permet d'appeler les fichiers XML correspondants au choix de l'utilisateur
var j= 0;
var lon=0;
var nom = null;
var test = null;
var numero = null;

//////////////////////////////////////DEBUT DES FONCTIONS/////////////////////////////////////////////

function Curseur(i,lon,nom,numero)
{
trace("dans curseur; boucle n° "+i);
trace("-----------------------------------------");
_root.onEnterFrame = function()
{
for(i=0;i<lon;i++)
{
_root.choixPhotos_mc["bitmap_mc"+i].onRollOver = function()
{
trace(_root.choixPhotos_mc["bitmap_mc"+i].numero);
}
_root.choixPhotos_mc["bitmap_mc"+i].onPress = function()
{
trace(nom);
getURL(nom);
}
}
}
trace("fin Curseur");
trace("-----------------------------------");
}

function effaceMovie(lon){
trace("--------");
trace("4 dans effaceMovie" );
trace("--------");

trace("lon dans effaceMovie= "+ lon);
for(i=0;i<lon;i++)
{
_root.choixPhotos_mc["bitmap_mc"+i].removeMovieClip();

}
trace("fin de 4 effaceMovie");
trace("-----------------------------------");
}
function ChargeXML(nomChoix) {
trace("--------");
trace("2 dans ChargeXML ");
trace("--------");

myXML.load("xml/"+nomChoix+".xml");

_root.onEnterFrame = function()
{
tout = myXML.getBytesTotal(); //taille totale
taille = myXML.getBytesLoaded(); //taille chargée

trace("taille = "+ taille);
trace("tout = "+ tout);

var rapport = Math.round((taille)/(tout)*100); // le pourcentage de chargement de l'image
pourcentage_txt.text = (rapport+ "%");
trace("rapport = " + rapport);
if (rapport >= 1) {
//on supprime l'évènement onEnterFrame
delete this.onEnterFrame;
}
pourcentage_txt._visible = false;
}
trace("fin 2 dans ChargeXML ");
trace("--------");
}
//////////////////////////////////////FIN DES FONCTIONS/////////////////////////////////////////////
///////////////////////////////:
//////////////////////////////

function affichage() {
myXML.onLoad = function(ok) {
if (ok) {
trace("--------");
trace("3 dans fonction principale affichage ");
trace("ok pour le chargement de la fonction XML");
trace("dans fonction XML");
var galleriev = myXML.firstChild.childNodes;
lon = galleriev.length;
trace("lon dans affichage= "+lon);

for (i = 0; i<lon; i++) {
nom = galleriev[i].attributes.nom;
trace("i= "+i);
trace("nom photos = "+nom);
test = _root.choixPhotos_mc.bitmap_mc.duplicateMovieClip(["bitmap_mc"+i],i+10);
_root.choixPhotos_mc["bitmap_mc"+i].loadMovie(nom);
_root.choixPhotos_mc["bitmap_mc"+i].numero = "truc"+i;
_root.choixPhotos_mc["bitmap_mc"+i]._xscale = _root.choixPhotos_mc["bitmap_mc"+i]._yscale /= 20;
}

Curseur(i,lon,nom,numero);

var colonne = 0;
var ligne = 0;

for (i=0; i<lon; i++) {
if (colonne == 3) {
colonne = 0;
ligne++;
}
_root.choixPhotos_mc["bitmap_mc"+i]._x = 200+(colonne*60);
_root.choixPhotos_mc["bitmap_mc"+i]._y = (-170)+(ligne*60);
colonne++;
}//fin de for
}//fin du if
else {
trace("pas ok pour le chargement de la fonction XML");
}
trace("--------");
trace("fin de onLoad 3 dans fonction principale affichage ");
}
}

cebazat_btn.onPress = function() {
effaceMovie(lon);
trace("--------");
trace("1 bouton");
trace("--------");
nomChoix = "cebazat";
pourcentage_txt._visible = true;
ChargeXML(nomChoix);
affichage();
trace("fin 1 bouton");
trace("--------");

}

gerzat_btn.onPress = function() {
nomChoix = "gerzat";
pourcentage_txt._visible = true;
ChargeXML(nomChoix);
affichage();
effaceMovie(lon);
}
paris_btn.onPress = function() {
nomChoix = "paris";
pourcentage_txt._visible = true;
ChargeXML(nomChoix);
affichage();
effaceMovie(lon);
}

Je vous mets aussi les comentaires générées dans le output.
--------
4 dans effaceMovie
--------
lon dans effaceMovie= 0
fin de 4 effaceMovie
-----------------------------------
--------
1 bouton
--------
--------
2 dans ChargeXML
--------
fin 2 dans ChargeXML
--------
fin 1 bouton
--------
--------
3 dans fonction principale affichage
ok pour le chargement de la fonction XML
dans fonction XML
lon dans affichage= 12
i= 0
nom photos = ../photos/cebazat/photo1.jpg
i= 1
nom photos = ../photos/cebazat/photo2.jpg
i= 2
nom photos = ../photos/cebazat/photo3.jpg
i= 3
nom photos = ../photos/cebazat/photo4.jpg
i= 4
nom photos = ../photos/cebazat/photo5.jpg
i= 5
nom photos = ../photos/cebazat/photo6.jpg
i= 6
nom photos = ../photos/cebazat/photo7.jpg
i= 7
nom photos = ../photos/cebazat/photo8.jpg
i= 8
nom photos = ../photos/cebazat/photo9.jpg
i= 9
nom photos = ../photos/cebazat/photo10.jpg
i= 10
nom photos = ../photos/cebazat/photo11.jpg
i= 11
nom photos = ../photos/cebazat/photo12.jpg
dans curseur; boucle n° 12
-----------------------------------------
fin Curseur
-----------------------------------
--------
fin de onLoad 3 dans fonction principale affichage
//une fois le rollOver exécuté
undefined
undefined

4 réponses

jdeboer Messages postés 254 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 4 février 2006
23 juil. 2004 à 16:27
Bon j ai pas lu ton code en entier .Dsl mais je suis un peu creve ;-). Mais voici comment moi j ai fait pour reperer le numero de la photo. en duplicant le clip , tu as nomme bitmap_mc + i. Du coup la premiere image est bitmap_mc1 , puis bitmap_mc2 ...
Du coup moi g que je fias quand la godin clique sur le clip, je recuper le nom du clip:
var = this._name

Apres bidouillage (genre un split), je recupere le numero 1,2,3... donc je sais kel image il veut.

Bon j espere que j ai repondu a ta question....lol. Je suis pas sur mais ton message etait trop long. Bon si c vraiment pas ca, ok je ferai un effort et je me pencherai plus en detail.
0
cs_tyler durden Messages postés 5 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 16 décembre 2009
28 juil. 2004 à 08:53
Bonjour les gens,
merci beaucoup jdeboer, ca m'a vraiment dépanné. Je connaissais pas la commande this._name, c'est ce qui me manquait.

MERCI MERCI

Par contre maintenant j'ai un nouveau problème. Toujours avec le même code. Maintenant je voudrai faire une animation de chargement en attendant que tout le site se charge. Pour ceci j'appelle le code précédent en tant que fichier externe dans un nouveau swf. Le problème est que maintenant tous mes appels (textes et fichiers) et chargement dynaimques ne se font plus. Par exemple, dans le texte que je charge provenant d'un document texte, il m'affiche maintenant "undefined". D'où viendrait cette erreur ? J'ai essayé de mettre les variables en _global mais rien à faire ?

D'avance merci
0
jdeboer Messages postés 254 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 4 février 2006
29 juil. 2004 à 14:53
Je pense que tu as charge le SWF dans un clip?
Si oui,disons qu il s appelle monclip. Pour pouvoir acceder aux variables chargees dans ce clip, tu rajoute monclip si tu n es pas dans monclip quand tu appelles la variables.
exemple:
monclip.clipprecedent.var1
0
cs_tyler durden Messages postés 5 Date d'inscription jeudi 6 mai 2004 Statut Membre Dernière intervention 16 décembre 2009
3 août 2004 à 10:17
Salut a tous,
J'ai essayé avec ce que tu m'as dit jdeboer mais ça ne marche pas. Tout le code présenté auparavant est chargé grâce à la commande loadMovie("doc1.swf","chargement_mc"); sur la frame 1. Ensuite, si l'ensemble du doc est chargé correctement, on passe à la frame 2. Vu que je dois charger des infos provenant de différents fichiers .txt, j'utilise une variable nommée "variableTexte" (désolé pour le manque d'originalité). Et c'est le contenu de cette variable qui pose problème lors du lancement. Normalement, le chemin deviendrait chargement_mc.variableTexte, mais j'ai essayé d'afficher le contenu via la commande trace et rien à faire. A chaque fois c'est la même chose : "undefined". Je ne vois vraiment pas d'où cela pourrait venir, car si je décide de donner une valeur fixe à cette variable, cela marche.......
:(

Merci d'avance
0
Rejoignez-nous