[Flash MX] Aide pour réalisation menu en arborescence
1 réponse
David
Bonjour,
Je suis en train de faire un menu en arborescence afin de me perfectionner
en ActionScript.
Je me heurte face à un petit souci que je n'arrive pas à résoudre.
Mon arborescance ce met à jour à partir d'un fichier TXT que je recréeraos à
la volée avec PHP.
J'arrive à récupérer les infos et à les appliquer à deux types de boutons :
- le premier sert d'affichage de categorie et permet de derouler ou
reduire le contenu lors d'un clic
- le second (sous bouton) permet d'aller vers un lien quelconque.
Mon souci est le suivant :
- lorsque j'affecte dynamiquement une fonction à un bouton, celui ci fait
apparaitre les sous boutons mais ne deplace pas les boutons et autres sous
boutons en dessous de lui.
- si je crée un bouton à la main et que je lui attribue la même action cela
marche.
Me doutant que mes explications soient peu claires, je vous fais parvenir
mon code ci dessous et je tiens mon FLA et mon TXT à disposition.
Merci,
David
(tout est géré à partir d'un clip appellé 'actions' situé en dehors de la
scène visible)
onClipEvent (load) {
var bouton_principal_hauteur = 13;
var bouton_secondaire_hauteur = 16;
// chargement php
var php_ok = 0;
loadVariablesNum ("navig.txt", 0);
function ferme(numero) {
// on ferme les sous boutons
if (_root["php_categorie_" + numero + "_nombre"] > 0) {
for (i=1; i<=_root["php_categorie_" + numero + "_nombre"]; i++) {
_root["bouton_"+numero+"_secondaire_"+i]._visible = 0;
}
}
var base_y = _root["bouton_" + numero]._y + bouton_principal_hauteur;
//on deplace les autres
for (i=(numero+1); i<=_root.categories; i++) {
// deplace boutonprincipal
_root["bouton_" + i]._y = base_y;
_root["bouton_" + numero].puce2._visible = 0;
_root["bouton_" + numero].puce1._visible = 1;
base_y = base_y + bouton_principal_hauteur;
//deplace sous boutons
for (j=1; j<=_root["php_categorie_" + i + "_nombre"]; j++) {
if (_root["php_categorie_" + i + "_nombre"] > 0) {
_root["bouton_"+i+"_secondaire_"+j]._x = 0;
_root["bouton_"+i+"_secondaire_"+j]._y = base_y;
base_y = base_y + bouton_secondaire_hauteur;
}
}
}
}
function ouvre(numero) {
//trace (numero);
// on ouvre les sous boutons
if (_root["php_categorie_" + numero + "_nombre"] > 0) {
var base_y = _root["bouton_" + numero]._y + bouton_principal_hauteur;
_root["bouton_" + numero].puce2._visible = 1;
_root["bouton_" + numero].puce1._visible = 0;
for (i=1; i<=_root["php_categorie_" + numero + "_nombre"]; i++) {
_root["bouton_"+numero+"_secondaire_"+i]._x = -4;
_root["bouton_"+numero+"_secondaire_"+i]._y = base_y;
_root["bouton_"+numero+"_secondaire_"+i]._visible = 1;
base_y = base_y + bouton_secondaire_hauteur;
}
}
// on deplace les boutons qui sont dessous vers le bas
for (i=(numero+1); i<=_root.categories; i++) {
// deplace boutonprincipal
_root["bouton_" + i]._y = base_y;
base_y = base_y + bouton_principal_hauteur;
//deplace sous boutons
if (_root["php_categorie_" + i + "_nombre"] > 0) {
for (j=1; j<=_root["php_categorie_" + i + "_nombre"]; j++) {
_root["bouton_"+i+"_secondaire_"+j]._x = 0;
_root["bouton_"+i+"_secondaire_"+j]._y = base_y;
base_y = base_y + bouton_secondaire_hauteur;
}
}
}
}
}
onClipEvent (enterFrame) {
if (_root.php_ok == 1){
var niveau = 1
for (i=1; i<=_root.categories; i++) {
// bouton principal
duplicateMovieClip (_root.bouton_principal, "bouton_"+i, niveau);
_root["bouton_" + i]._x = 0;
_root["bouton_" + i]._y = bouton_principal_hauteur * i;
_root["bouton_" + i].puce2._visible = 0;
_root["bouton_" + i].txt_libelle.text = _root["php_categorie_" + i +
"_nom"];
_root["bouton_" + i].bouton2._visible = 0;
// bouton pour ouvrir
_root["bouton_" + i].bouton1.onRelease = function () {
var aaa = String(this).split("_");
var bbb = String(aaa[2]).split(".");
var lequel = bbb[0];
_root.actions.ouvre(lequel);
_root["bouton_" + lequel].bouton1._visible = 0;
_root["bouton_" + lequel].bouton2._visible = 1;
};
// bouton pour fermer
_root["bouton_" + i].bouton2.onRelease = function () {
var aaa = String(this).split("_");
var bbb = String(aaa[2]).split(".");
var lequel = bbb[0];
_root.actions.ferme(lequel);
_root["bouton_" + lequel].bouton1._visible = 1;
_root["bouton_" + lequel].bouton2._visible = 0;
};
niveau++;
for (j=1; j<=_root["php_categorie_" + i + "_nombre"]; j++) {
// sous boutons
duplicateMovieClip (_root.bouton_secondaire,
"bouton_"+i+"_secondaire_"+j, niveau);
_root["bouton_"+i+"_secondaire_"+j]._visible = 0;
_root["bouton_"+i+"_secondaire_"+j].txt_libelle.text =
_root["php_categorie_" + i + "_detail_" + j + "_nom"];
niveau++;
}
}
_root.php_ok = 0; // pour empecher de boucler dans le chargement des
variables
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
[NikO]
David wrote:
Bonjour,
celui là fonctionne, à toi de l adapter : creer un clip avec dedans un champ texte ayant pour nom d'occurence Titre, ensuie tu va dans bibliotheque liaison, tu fait exporter en as pour la 1 er frame et tu le nomme Menu
function image() { for (var i = 0; i<=navig.length-1; i++) { this.attachMovie("Menu", "Menu"+i, 30+i); with (this["Menu"+i]) { _x = 100; _y = 21*i; Titre.text = navig[i]; } this["Menu"+i].valeur = i; this["Menu"+i].onRollOver = function() { for (var j = 0; j<=sousmenu[0,this.valeur].length-1; j++) { this.attachMovie("Menu", "Sousmenu"+j, 10+j); this["Sousmenu"+j].Titre.text = sousmenu[0,this.valeur].slice(j,j+1) this["Sousmenu"+j]._y = 21+21*j; } for (var k = 0; k<=navig.length-1; k++) { if (k>this.valeur) { var long = sousmenu[0,this.valeur].length; _root["Menu"+k]._y += 21*long; } } }; this["Menu"+i].onRollOut = function(i) { for (var j = 0; j<=sousmenu[0,this.valeur].length-1; j++) { this["Sousmenu"+j]._y = 0; this["Sousmenu"+j]._visible = 0; } for (var k = 0; k<=navig.length-1; k++) { if (k>this.valeur) { var long = sousmenu[0,this.valeur].length; _root["Menu"+k]._y -= 21*long; } } }; } } _root.image();
-- Ressources pour designer et codeur ... http://niko.informatif.org/favoris.php
David wrote:
Bonjour,
celui là fonctionne,
à toi de l adapter :
creer un clip avec dedans un champ texte ayant pour nom d'occurence
Titre, ensuie
tu va dans bibliotheque liaison,
tu fait exporter en as pour la 1 er frame et tu le nomme Menu
celui là fonctionne, à toi de l adapter : creer un clip avec dedans un champ texte ayant pour nom d'occurence Titre, ensuie tu va dans bibliotheque liaison, tu fait exporter en as pour la 1 er frame et tu le nomme Menu