Bonjour,
Je charge une liste de liens dans un flash à partir d'un fichier XML. J'arrive à y récupérer mes intitulés de liens, les URLs associées et j'arrive à faire une boucle pour qu'ils s'affichent les uns en dessous des autres. Malheureusement, certains liens doivent s'afficher sur deux lignes (la largeur de mon menu étant limité) et je ne sais pas comment gérer dynamiquement ce point là.
J'ai imaginé 2 approches:
1- Mes lien sont actuellement affichés dans des champ texte dynamiques distincts qui sont tous les uns en dessous des autres à une distance toujours identique (nextY). Du coup, j'ai imaginé compter le nombre de caractère de chaque lien pour déterminer si mon lien passe sur 2 lignes pour ensuite ajuster la valeur de mon "nextY". Cette approche me semble lourde et je l'ai abandonnée.
2- Je me suis dit que je pouvais chargé l'ensemble des liens dans un même bloc afin qu'ils puissent s'afficher simplement les uns en dessous des autres, mais je ne vois pas comment je peux faire une boucle pour y afficher tous les intitulés de liens avec leur URLs associées dans un même bloc.
Quelqu'un a-t-il une idée? y-a-t'il une méthodes classique dans pareil cas?
(en tout cas, jusqu'à présent, tous les codes que j'ai pu tester dans ma recherche ne gèrent pas des intitulés de liens qui doivent passer sur plusieurs lignes).
Voici mon code actuel (qui correspond à la 1ère approche évoquée plus haut):
[code]importXML = new XML();
importXML.ignoreWhite = true;
importXML.onLoad = function(success)
{
if (success)
{
var depth = 0;
var nextY = 185; // position de mon 1er lien
var nextBtnY = 35; // espacement entre chaque lien
count = 0;
var root = this.firstChild; // Mon noeud de base
for (var i = root.firstChild.childNodes[3]; i != null; i = i.nextSibling)
{
tempMC = attachMovie ("box", "box" + count, depth ++, {_y : (nextY) , _x : (215)} ); // création du champ texte dynamique
nextY += tempMC._height - + 35;
tempMC.name_txt.text = i.firstChild.firstChild.nodeValue; // récupération de l'intitulé de mon lien
tempBTN = i.childNodes[1].firstChild.nodeValue; // récupération du lien associé
tempBTN = tempBTN.toString().slice(9); // début du nettoyage du lien récupéré
tempBTN = tempBTN.toString().slice(0,-10); // fin du nettoyage du lien récupéré
trace(tempBTN);
tempMC.onRelease = function() {
getURL(tempBTN,"_blank"); // ajout du lien récupéré sur l'intitulé correspondant
}
count ++;
}
}
}
importXML.load("expertise.xml");[/AS]
Merci pour vos conseils.