Boutons en xml avec seconde ligne créée au bout de 5 boutons [Résolu]

Signaler
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
-
cs_goldenboy68
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
-
Bonjour à tous,

je suis débutant en code, j'ai suivi une petite formation la semaine derniere dans laquelle nous avions pris l'exemple d'une galerie xml, seulement voilà je bloque un peu, je suis pas trop encore autonome :)

via un bout de code, je crée en fait des boutons qui appelleront des images dans un autre clip, le tout en xml. seulement mon probleme c'est que cela fonctionne sur une largeur de 5 boutons, mais la largeur de mon menu ne me permet pas d'aller au delà.

je cherche donc une petite formule pour dire à flash de "revenir à la ligne" juste en dessous au bout de 5 clips (boutons) créés.
je suis clair ? sinon ça sort de mon menu et ça n'a pas plus d'intéret..

je glisse le code si quelqu'un se sentait capable de m'aider :

// Création du clip vide qui accueillera les images
_root.orientation_courante = "";
_root.menu_xml = new XML();
menu_xml.ignoreWhite = true;
//System.useCodePage = true;
menu_xml.onLoad = function() {
// On place dans un tableau les items associés au premier noeud
noeuds = this.firstChild.childNodes;
// Affichage du nombre de liens à afficher
trace(noeuds);
// Pour chaque lien (case du tableau)
for (var i = 0; i < noeuds.length; i++) {
// On crée une occurence du clip mc
trace (typeof(_root.mise_en_place.crea));
lien = _root.mise_en_place.crea.attachMovie("clipcarré", "clipcarre" + i, i + 30 );
trace ("bouton créé");
// On redéfinit la taille du clip en fonction de la largeur de la scène
// On le positionne dans la scène en abscisse
lien._x = -60 + (lien._width + 11 ) * i + 11;
// On le positionne dans la scène en ordonnée
//if (i % 5 == 0) lien._y 40; > ça doit etre par là qu'on pourrait modfier la chose :)
// On intègre le texte du lien
//lien.monTexte.text = noeuds[i].firstChild.nodeValue;
// On définit une variable adresse associée au clip courant
lien.adresse = noeuds[i].attributes.url;
lien.titre_commentaire = noeuds[i].attributes.titre_commentaire;
lien.commentaire = noeuds[i].attributes.commentaire;
lien.orientation = noeuds[i].attributes.orientation;
// Par défaut, le texte de commentaire est invisible
lien.bt_titre_commentaire._visible = false;
// Affichage du texte au survol du bouton
lien.onRollOver = function() {
/* this.bt_titre_commentaire.text = this.titre_commentaire;
this.bt_titre_commentaire._width = 1000;
this.bt_titre_commentaire._alpha = 100;
this.bt_titre_commentaire._x = this._xmouse + 5;
this.bt_titre_commentaire._y = this._ymouse + 5;
this.bt_titre_commentaire.autoSize = true;
this.bt_titre_commentaire._visible = true;*/
//Au clic, on ouvre une fenêtre de navigateur avec comme URL adresse
}

merci encore à vous si quelqu'un avait la gentillesse de regarder ça vite fait :)

pocket

21 réponses

Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
1
Subtil!! P't'être un peu trop! lol

Bref, c'est bien ce que je pensais...avec ma p'tite bidouille, ça devrait s'afficher correctement!

@+! Samy

PS: l'autre solution aurait été de commencer à partir de 1 ou alors de remplacer "i" par "(i-1)" à pas mal d'endroit...bref, je crois que ma p'tite modif fera l'affaire!
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
1
T'as bien repéré la ligne...c'est déjà ça!



lien._y = 40*Math.ceil(i/5);



Essaie-voir avec ça! Sinon, l'autre solution, ce serait de pouvoir
faire défiler ton menu avec tes boutons! (ce qui se fait en général,
car si t'as 80 boutons, y'a encore la place pour le reste de l'anim?
lol)



Mais bon...y'aurait un ch'tit peu plus de code!!!



@+! Samy
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010

nop ça marche pas !
merci qd meme à toi :)

ça donne ça si tu veux voir ==> http://www.cc-pays-sud-gatine.fr/flash/site.swf

en fait le premier est décalé vers le haut et les autres au bout de 5, sans pb, mais continuent vers la droite..

je précise qu'il faut cliquer sur creations (passer la souris sur l'extremité gauche du men du menu) pr faire apparaitre les boutons en question.

merci encore !
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
1
oups...j'ai géré que la position sur Y...pas pensé à X sur le coup! lol



lien._x = -60 + (lien._width + 11 ) * (i%5) + 11;



...et en passant j'ai vu que t'avais un "if(i%5==0)" ...supprime ce test.



lien._y = 40*Math.ceil(i/5);



@+! Samy
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010

trop sympa de ta part :)

mais c'est pas encore tout à fait ça ==> http://www.cc-pays-sud-gatine.fr/flash/site.swf

le premier de la deuxieme ligne remonte plus haut que la premiere, à moins que ce ne soient les premiers de chaque ligne qui remontent tous les deux :)

encore un effort t'y es presque et t'auras droit à ton nom dans les remerciements ;)

merci !
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
1
euh...depuis avant, toujours pas vue tes boutons...t'as mis à jour
l'anim? Y'a bien un début, mais aucun bouton s'affiche! T'as mis le XML
au bon endroit?



Faudrait que je vois...car comme ça, j'ai du mal à m'imaginer ce qui va pas



@+! Samy
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010

oui tout est à jour je dois juste retravailler l'ergonomie :)

en fait quand le menu rose apparait, approche ta souris de l'extremité gauche de ce menu. un onglet apparaitra. choisi le bouton creations qui lancera la galerie à droite. le reste est très bencale mais ce ne sont pour l'instant que les boutons qui m'intéressent voilà :)

merci encore j'espere que je ne t'embete pas trop avec mes soucis de newbie :)
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
1
Je crois que j'ai compris...c'est le Math.ceil(0/5) qui vaut 0, alors remplace:

lien._y = 40*Math.ceil(i/5);



par:

lien._y = 40*Math.ceil(i/5+0.01);



Dis-moi ce que ça donne avec ça!



@+! Samy
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010

trop fort !

ça marche du feu de dieu ta bidouille :)

merci encore, je te garde sous la main en futur beta testeur ;)

ciao !
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
1
No problem...poste un truc dans ce post et j'irai tester ton site!

@+! Samy
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010

super sympa de ta part, merci encore :)

(de toute façon j'ai pas fini de t'embeter à mon avis ;))

ciao :)
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010

yjihaa ! :)

on continue dans la joie et la bonne humeur :)

alors voilà j'ai réussi pas mal de trucs aujourd'hui donc je suis bien content mais force est de constater que je galere à mort et que là je coince sur le meme truc depuis deux heures ça le fait pas du tout.. :(

ça doit etre enfantin pourtant mais je connais pas très bien les syntaxes de ce nouveau monde qu'est l'actionscript alors ça coinche..

voilà mon code :

je précise avant que c'est pas du tout optimisé, je le sais, mais j'apprends petit à petit de mes erreurs et j'écris tout pour l'instant afin de gagner en assurance etc... (rajoutez ici votre blabla d'excuses, merci :))

j'ai un fichier xml avec trois noeuds enfants, charpentes, couvertures, ossatures qui comportent pour l'instant les memes images dans leur description mais je pense pas que ça interfere..

quand je lance tout ce beau monde je me retrouve avec 12000 undefined en sortie..

_root.orientation_courante = "";
_root.menu_xml = new XML();
menu_xml.ignoreWhite = true;
//System.useCodePage = true;
menu_xml.onLoad = function() {
// On place dans un tableau les items associés au premier noeud
charpentes = this.firstChild.firstChild.childNodes;
trace(charpentes);
couvertures = this.firstChild.firstChild.nextSibling.childNodes;
trace(couvertures);
ossatures = this.firstChild.firstChild.nextSibling.nextSibling.childNodes;
trace(ossatures);


// Pour chaque lien (case du tableau)
for (var i = 0; i < charpentes.length; i++) {
// On crée une occurence du clip mc
trace (typeof(_root.mise_en_place.sousmenu.crea.charpentes));
lien = _root.mise_en_place.sousmenu.crea.charpentes.attachMovie("clipcarré", "clipcarre" + i, i + 30 );
//trace ("bouton créé");
// On redéfinit la taille du clip en fonction de la largeur de la scène
// On le positionne dans la scène en abscisse
lien._x = -60 + (lien._width + 11 ) * (i%5) + 11;
lien._y = 30*Math.ceil(i/5+0.01);
// On intègre le texte du lien
lien.monTexte.text = charpentes[i].firstChild.firstChild.nodeValue;
// On définit une variable adresse associée au clip courant
lien.adresse = charpentes[i].attributes.url;
lien.titre_commentaire = charpentes[i].attributes.titre_commentaire;
lien.commentaire = charpentes[i].attributes.commentaire;
lien.orientation = charpentes[i].attributes.orientation;
// Par défaut, le texte de commentaire est invisible
lien.bt_titre_commentaire._visible = false;
}

/////
////
for (var i = 0; i < couvertures.length; i++) {
// On crée une occurence du clip mc
trace (typeof(_root.mise_en_place.sousmenu.crea.couvertures));
lien = _root.mise_en_place.sousmenu.crea.couvertures.attachMovie("clipcarré", "clipcarre" + i, i + 30 );
//trace ("bouton créé");
// On redéfinit la taille du clip en fonction de la largeur de la scène
// On le positionne dans la scène en abscisse
lien._x = -60 + (lien._width + 11 ) * (i%5) + 11;
lien._y = 30*Math.ceil(i/5+0.01);
// On intègre le texte du lien
lien.monTexte.text = couvertures[i].firstChild.firstChild.nextSibling.nodeValue;
// On définit une variable adresse associée au clip courant
lien.adresse = couvertures[i].attributes.url;
lien.titre_commentaire = couvertures[i].attributes.titre_commentaire;
lien.commentaire = couvertures[i].attributes.commentaire;
lien.orientation = couvertures[i].attributes.orientation;
// Par défaut, le texte de commentaire est invisible
lien.bt_titre_commentaire._visible = false;
}
////
////

for (var i = 0; i < ossatures.length; i++) {
// On crée une occurence du clip mc
trace (typeof(_root.mise_en_place.sousmenu.crea.ossatures));
lien = _root.mise_en_place.sousmenu.crea.ossatures.attachMovie("clipcarré", "clipcarre" + i, i + 30 );
//trace ("bouton créé");
// On redéfinit la taille du clip en fonction de la largeur de la scène
// On le positionne dans la scène en abscisse
lien._x = -60 + (lien._width + 11 ) * (i%5) + 11;
lien._y = 30*Math.ceil(i/5+0.01);
// On intègre le texte du lien
lien.monTexte.text = charpentes[i].firstChild.firstChild.nextSibling.nextSibling.nodeValue;
// On définit une variable adresse associée au clip courant
lien.adresse = ossatures[i].attributes.url;
lien.titre_commentaire = ossatures[i].attributes.titre_commentaire;
lien.commentaire = ossatures[i].attributes.commentaire;
lien.orientation = ossatures[i].attributes.orientation;
// Par défaut, le texte de commentaire est invisible
lien.bt_titre_commentaire._visible = false;



// Affichage du texte au survol du bouton
lien.onRollOver = function() {
this.visite.gotoAndPlay("visible");
this.bt_titre_commentaire.text = this.titre_commentaire;
this.bt_titre_commentaire._width = 1000;
this.bt_titre_commentaire._alpha = 0;
this.bt_titre_commentaire._x = this._xmouse + 5;
this.bt_titre_commentaire._y = this._ymouse + 5;
this.bt_titre_commentaire.autoSize = true;
this.bt_titre_commentaire._visible = true;

////
////



//Au clic, on ouvre une fenêtre de navigateur avec comme URL adresse
}
// MAsquage du texte à la sortie du bouton
lien.onRollOut = function() {
this.visite.gotoAndPlay("invisible");
this.bt_titre_commentaire._visible = false;

//Au clic, on ouvre une fenêtre de navigateur avec comme URL adresse
}

merci encore j'ai beaucoup appris ces derniers jours !! (je sais ça doit pas se voir :D)
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
1
C'est p-ê simplement la structure de ton fichier XML qui n'est pas bonne!



Sinon, j'crois qu'il y a un tuto sur ce site qui traite de la relation Flash-XML...



@+! Samy
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010

ha ok !
mon code est bon ? :) j'suis surpris là :)

j'vais yeuter ça merci :)

nicolas
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010

réflexion faite ça doit venir du code (ou de mes clips qui reçoivent qui sait..) car après un trace je recupere bien toutes mes infos...
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010

c'est bon j'ai trouvé ! :)

en fait les clips qui recevront le clip créé doivent etre présents dans la premiere image et durant tout l'animation.
j'ai donc tout mis dans la premiere image et un clip par calque.. et suivant l'endroit das l'animation je masque ou pas le calque..

par contre c'est étrange, mais mes derniers boutons marchent parfaitement mais ceux des deux premiers menus ne donnent des liens et n'affichent un clip au rollover que sur le dernier bouton de chaque groupe..

doit yavoir une erreur de syntaxe quelque part
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
1
La plupart du temps, ce genre de problème, c'est quand tu fais une boucle avec une variable "i" ...genre:



for(i=1;i<5;i++){

this["btn"+i].onPress=function(){

trace(i);

}

}



Dans ce cas, seul le dernier bouton affichera le bon truc...car i garde
sa valeur finale 4...je suppose que c'est ce genre de soucis qui
t'arrives!



@+! Samy



PS: la solution:



for(i=1;i<5;i++){

this["btn"+i].varI=i

this["btn"+i].onPress=function(){


trace(this.varI);


}


}
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010

re,

j'apprécie beaucoup ton aide merci encore,

par contre je bloque je dois pas comprendre exactement le truc..

j'ai fait ça sur ton modele :

for (var i = 0; i < charpentes.length; i++) {
this["clipcarre"+i].varI=i ==> j'ai rajouté ça, marche pas mieux..
// On crée une occurence du clip mc
trace (typeof(_root.mise_en_place.sousmenu.crea.charpentes));
lien = _root.mise_en_place.sousmenu.crea.charpentes.attachMovie("clipcarré", "clipcarre" + i, i + 30 );
//trace ("bouton créé");
// On redéfinit la taille du clip en fonction de la largeur de la scène
// On le positionne dans la scène en abscisse
lien._x = -60 + (lien._width + 11 ) * (i%5) + 11;
lien._y = 30*Math.ceil(i/5+0.01);
// On intègre le texte du lien
lien.monTexte.text = charpentes[i].firstChild.firstChild.nodeValue; // dans cette zone j'ai également remplacé // On définit une variable adresse associée au clip courant // tous les i par varI pour voir
lien.adresse = charpentes[i].attributes.url;//
lien.titre_commentaire = charpentes[i].attributes.titre_commentaire;// sans résultat, je dois pas faire ce qu'il faut,
lien.commentaire = charpentes[i].attributes.commentaire;// pas bien saisir :-(
lien.orientation = charpentes[i].attributes.orientation; //
// Par défaut, le texte de commentaire est invisible
lien.bt_titre_commentaire._visible = false;
}

// Affichage du texte au survol du bouton
lien.onRollOver = function() {
this.visite.gotoAndPlay("visible");
this.bt_titre_commentaire.text = this.titre_commentaire;
this.bt_titre_commentaire._width = 1000;
this.bt_titre_commentaire._alpha = 0;
this.bt_titre_commentaire._x = this._xmouse + 5;
this.bt_titre_commentaire._y = this._ymouse + 5;
this.bt_titre_commentaire.autoSize = true;
this.bt_titre_commentaire._visible = true;

si tu vois un truc... j'ai résolu le pb d'affichage de ma galerie déjà.. tous les jours je résous un petit truc, je pense que dans 5 ans le site devrait presque etre fini...

merci encore
Messages postés
1623
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
9 juin 2011
1
Y'a un soucis je pense...tu crées tes boutons dans la boucle FOR non?
Alors pourquoi tu déclares pas le onRollOver dans la même boucle?



for (var i = 0; i < charpentes.length; i++) {

// On crée une occurence du clip mc

lien=_root.mise_en_place.sousmenu.crea.charpentes.attachMovie("clipcarré", "clipcarre" + i, i + 30 );

// On redéfinit la taille du clip en fonction de la largeur de la scène

// On le positionne dans la scène en abscisse

lien._x = -60 + (lien._width + 11 ) * (i%5) + 11;

lien._y = 30*Math.ceil(i/5+0.01);

// On intègre le texte du lien

lien.monTexte.text = charpentes[i].firstChild.firstChild.nodeValue;

// On définit une variable adresse associée au clip courant

lien.adresse = charpentes[i].attributes.url;

lien.titre_commentaire = charpentes[i].attributes.titre_commentaire;
lien.commentaire = charpentes[i].attributes.commentaire;

lien.orientation = charpentes[i].attributes.orientation;
// Par défaut, le texte de commentaire est invisible

lien.bt_titre_commentaire._visible = false;



// Affichage du texte au survol du bouton


lien.onRollOver = function() {


this.visite.gotoAndPlay("visible");


this.bt_titre_commentaire.text = this.titre_commentaire;


this.bt_titre_commentaire._width = 1000;


this.bt_titre_commentaire._alpha = 0;


this.bt_titre_commentaire._x = this._xmouse + 5;


this.bt_titre_commentaire._y = this._ymouse + 5;


this.bt_titre_commentaire.autoSize = true;


this.bt_titre_commentaire._visible = true;

//...suite des actions

}



}



Ca devrait être mieux comme ça! Désolé, mais à priori ma réponse précédente ne s'appliquait pas à ton soucis.



@+! Samy
Messages postés
48
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
7 juin 2010

malheureux faut pas t'excuser de vouloir m'aider ;)

ok je vois ça. le code devait etre correct avant quand je n'avais qu'un noeud xml. mais j'en ai rajouté 2 donc j'ai copié collé betement des parties de texte.
du coup je me retrouve avec plusieurs boucles for... p'tete bon aussi... j'suis paumé..
et je remets quasiment le meme code pour chaque boucle puisqu'à chaque fois pour un bouton créé dans un noeud, il doit afficher un commentaire au survol, ne plus l'afficher au sortir du survol, charger l'image correspondante au clic, avec loading svp :)
du coup je me retrouve avec un code de 30 m de long mais je suis pas capable de l'optimiser d'avantage...
le loading j'imagine qu'il faudra que j'integre ça dans les fonctions du on release mais ça va etre chaud encore je pense :D

j'ai copié ton bout de code effectivement le survol marche dorenavant pr tous les boutons mais le sortir du survol ne fonctionne plus pour sa part

merci encore
1 2