Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Flash MX] Aide pour réalisation menu en arborescence

1 réponse
Avatar
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
}

}

1 réponse

Avatar
[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


navig = ["menu1", "menu2", "menu3"];
s1 = ["11", "12", "13"];
s2 = ["21", "22", "23"];
s3 = ["31", "32", "33"];
sousmenu = [s1,s2,s3]

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