Pb load de variable

draculaseb Messages postés 3 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 20 janvier 2003 - 13 janv. 2003 à 20:45
MrOsmose Messages postés 24 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 18 avril 2007 - 11 août 2004 à 15:29
bonjour !
j'aimerai créer un menu facile à configurer et réutilisable dans n'importe quelle page, donc en faisant passer les variables par l'url, quand on lis le flash avec embed : menu.swf?var=value, ou avec un fichier txt (pas de fichier XML par pitié, je vien de comencer flaash il y a 5 jpours !)
mais j'y arrive pas !
merci !
@+,
dracula

1 réponse

MrOsmose Messages postés 24 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 18 avril 2007
11 août 2004 à 15:29
le probleme avec un fichier texte, c'est qu'il va te créer toutes tes variables directement selon les noms que tu met dans le texte. De plus, il va considérer la TOTALITE de tes caracteres...

je m'explique avec un exemple de fichier qui peut etre chargé avec loadvar()

&nom=titre1&link=http:\\lien1.html
&nom=titre2&link=http:\\lien1.html
&nom=titre3&link=http:\\lien1.html


ce type de fichier posera 2 problemes :
1/ ton lien ne marche pas telquel car il y a un caractere de retour a la ligne en fin de ligne -> tu dois obligatoirement mettre tout sur 1 seule ligne OU t'amuser a parcourir tes chaines de caracteres pour retirer tout caracteres du au formatage de ton fichier.
2/ tu ne te retrouvera de toute facon a la fin qu'avec 1 seule variable nom et 1 seule variable link.

le code correct serait donc

&nom1=titre1&link1=http:\\lien1.html&nom2=titre2&link2=http:\\lien1.html&nom3=titre3&link3=http:\\lien1.html


ce qui est beaucoup moins lisible et t'oblige de faire des tests a chaque nouveau bouton pour savoir si cette variable existe deja ou pas (ce qui signifiera que tu aura passé tout tes titre[n]

en revanche, meme si le xml peut paraitre rébarbatif au debut, il y a tout a fait moyen d'en faire quelque chose de correct quand tu a aquis une ou deux bases...

voici mon fichier texte "config.xml"
Suivi des CR

<title>TITRE1</title>
<link>http://page1.html</link>

<title>TITRE2</title>
<link>http:\\</link>



comme tu le vois, j'ai mon premier élément qui est mon titre de page, puis chaque element suivant represente les données d'un bouton c a d : le nom du bouton(title) et le lien qui y est associé(link)

et voici le code a associer a la premiere frame de ton animation
(tout les boutons sont créés dés le départ, mais le code les rend invisible et inutilisable tant qu'il n'ont pas été configurés. c'est une limitation qui m'ennuie aussi, mais je n'ai pas encore trouvé de meilleure solutions)
le nom des bouton est, dans l'ordre BTN1,BTN2...
au dessus du bouton je place un texte et dans les propriétés je desactive l'option "selectionable", je le met en "texte dynamique" avec comme variable associée (var) _root.BTNname[0],_root.BTNname[1]... et je l'appelle TXT1,TXT2...
//creation de la variable pour enregistrer les données
config_xml = new XML();

//creation des tableau de nom et de lien
_root.address = new Array();
_root.BTNname = new Array();

// une fois chargé, je traite le fichier XML
config_xml.onLoad = function(success) {
        if (success) {
                processConfig(config_xml);
        }
};

//et voici la fonction qui place les données dans les boutons
function processConfig(xmlDoc_xml) 
{       // chargement du titre de la page
_root.titletext=xmlDoc_xml.childNodes[0].firstChild;
_root.pagetitle.text=_root.titletext;

//Je boucle pour le nombre de bouton
        for (var n = 1; n<xmlDoc_xml.childNodes.length; n++) 
{	//A chaque bouton, j'associe les parametres
                //et fait apparaitre l'objet

//je choisis le bouton suivant
_root.actBTN = "BTN"+n;
_root.actTXT = "TXT"+n;

//je rend visible le bouton et le texte
_root[actBTN]._visible = true;
_root[actTXT]._visible = true;

//VOIR EXPLICATION DES "TRAJETS" XML
//j'associe les sources aux tableaux et au textes
_root.BTNname[n-1]=xmlDoc_xml.childNodes[n].childNodes[0].firstChild.nodeValue;
_root[actTXT].text=_root.BTNname[n-1];
_root.address[n-1]=xmlDoc_xml.childNodes[n].childNodes[1].firstChild.nodeValue;
        }
}


EXPLICATION DES "TRAJETS" XML
------------------------------------------
une fois chargé, le xmlDoc_xml est la "source" des données.
pour aller a l'enfant X d'un objet, j'utilise la commande childNodes[X]
donc pour avoir le titre du second bouton, je dois prendre le trajet : xmlDoc_xml.childNodes[2].childNodes[1]

cependant ce que j'obtient alors c'est : "<title>TITRE1</title>" ou TITRE1 est le premier enfant du noeud "<title>".
j'obtiens donc xmlDoc_xml.childNodes[2].childNodes[1].firstChild

enfin, nodeValue permet d'obtenir une texte mieux formaté (exemple les & qui devienne &)

enfin, dans chaque bouton je dois aussi placer un certain code qui va le lier a l'adresse attribuée:
on(release)
{	getURL(_root.address[0],"_self");
}


Voila... en esperant avoir été assez complet... :) :)
0
Rejoignez-nous