Menu dynamique sous Flash

Résolu
cs_jennnny Messages postés 4 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 26 mars 2007 - 6 mars 2007 à 17:03
cs_jennnny Messages postés 4 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 26 mars 2007 - 26 mars 2007 à 11:47
Bonjour,

je souhaite faire un menu déroulant sous Flash comme sur le site : http://www.vanderbauwede.ch/
qui "pousse" mes menus vers le bas si l'un d'eux à des sous menu.

J'espère avoir été précise et merci d'avance pour vos réponses :)

6 réponses

Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
7 mars 2007 à 10:39
Salut

Alors pour faire ce genre de menu, tu as plusieurs solutions en fonction de tes connaissances en flash ...

Si tu n'es pas à l'aise en action script, tu peux faire tout ça en animation. Lorsqu'on clique sur le lien, il lance l'animation à la frame correspondant et ton sous menu apparaît ainsi.
L'avantage est que cette méthode est relativement facile et rapide à mettre en place mais elle sous entend que ton menu ne changera pas ... pas d'ajout ou suppression de bouton sinon faudra retoucher TOUTES les animations, ce qui peut facilement devenir fastidieux.

Si tu n'as pas peur de l'action script, tu peux imaginer faire un script qui déplace en boucle tes boutons jusqu'à une ordonnée définie, exemple (à froid, sans trop de réflexion ... donc peut être à revoir, optimiser etc ... au moins ça te pourra t'inspirer  ) :
Code :
   // Initialisation des variables
   tableau_conteneur_information_boutons_cibles        :Array    = new Array();
   mon_interval                                                            :Number = 0;
   // Fonction qui déplace les boutons  
   function deplacement_bouton(adresse_bouton :MovieClip, ordonnee_cible :Number, vitesse :Number){ 
         // Je déplace le bouton
         adresse_bouton._y      += vitesse;
   }

   // Fonction qui analyse le déplacement des boutons : 
   function analyse_deplacement(){
         // Je vérifie que le premier bouton n'ait pas déjà atteind sa cible, si c'est le cas, alors on arrête la boucle ... dans mon cas, le premier bouton est celui qui bougera en dernier ... puisque le menu descend
         if(adresse_bouton._y >= ordonnee_cible){
               // J'arrête la boucle
               clearInterval(mon_interval);
               // Je repositionne correctement les boutons (simple sécurité)
              for( var cellule :String in tableau_conteneur_information_boutons_cibles){
                  tableau_conteneur_information_boutons_cibles[cellule].adresse._y = tableau_conteneur_information_boutons_cibles[cellule].ordonnee;
        }else{
            // Lancement de la boucle pour déplacer tous les boutons en même temps, ... on peut aussi imaginer les déplacer les uns après les autres
            for( var cellule :String in tableau_conteneur_information_boutons_cibles){
               // Je récupère l'adresse du bouton, son ordonnée maximale à atteindre et j'attribue un déplacement de 2px ... on peut aussi définir dynamiquement la vitesse
               deplacement_bouton(tableau_conteneur_information_boutons_cibles[cellule].adresse, tableau_conteneur_information_boutons_cibles[cellule].ordonnee, 2);
            }
        }
   }

   // Fonction qui est appelé par le bouton : 
   bouton.onRelease = function(){
     // Je sauve l'adresse des boutons dans des objts avec leur ordonnée max dáns le tableau prévu à cet effet.
     tableau_conteneur_information_boutons_cibles        = [   {adresse:bouton1, ordonnee:20}, 
                                                                                            {adresse:bouton2, ordonnee:40}, 
                                                                                            {adresse:bouton3, ordonnee:60}];
      // Ici je n'ai mis que 3 boutons et j'ai donné directement leur ordonnée à atteindre ... en dur, mais on peut très bien imaginer qu'elle soit calculée.
      // Je lance la boucle qui déplacera mes boutons toutes les dixièmes de seconde: 
      mon_interval = setInterval(analyse_deplacement, 100);
   }
// Fin du code

Voilà, comme je te l'ai dit, faut surement revoir tout ça ... mais comme je n'ai pas flash actuellement sur mon pc, je te fais ça en aveugle.
J'espère avoir pu quand même t'aider ou au moins t'inspirer 

--------- Darkrats ---------
la loi est dure mais c'est la loi
 -------- Infograpix --------
3
cs_jennnny Messages postés 4 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 26 mars 2007
7 mars 2007 à 11:38
Salut, et merci pour ta réponse :)

Effectivement je ne suis pas super à l'aise avec l'action script :) et faire mon menu déroulant en anim serait peut être plus simple dans un premier temps !!! d'autant que je ne compte pas changer les boutons :) !!! oufff !!!

pourrais tu m'éclairer un peu sur la méthode a avoir pour le faire en anim?
Est-ce que tous mes noms de menu sont des boutons qui se trouvent dans un même clip par exemple ? et les noms des sous menu aussi dans le même clip?

J'avoue que je débute sous Flash et qu'il me manque un peu de méthode !!! :) mais je devrais y arriver !!! :)

Merci encore
3
Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
7 mars 2007 à 19:31
Salut,

Alors en animation, pour les boutons, ça dépend aussi de ta volonter à mettre les mains dans le cambouis as

Le plus simple, mais le plus lourd tant à la conception qu'au poids, c'est de faire un symbole pour chaque bouton.

Une autre solution, tu crées un symbole bouton avec une zone de texte dynamique et tu attribues le nom à ce champ texte.
Exemple, si mon bouton à cette hiérarchie :
-> clip principal (qui contient le menu avec toutes les animations)
-> clip bouton (clip du bouton)
-> champ texte (et autre design du bouton)
Ca donnera quelque chose comme ceci :
clip_principal.bouton1.texte_bouton.text = "accueil";
(en sachant que clip_principal, bouton1, texte_bouton sont les noms d'occurence des clips).
Avec cette méthode, il te faudra importer la police dans flash pour que tu puisses l'utiliser sur tous les pc, sinon ils auront une police par défaut. Si tu veux ça, cherche sur le forum "police de périphérique" ou "police importée" tu devrais trouver ton bonheur

Autre solution possible, comme d'hab : simple mais lourde, tu crées un symbole clip avec plusieurs frame qui continedra à chaque frame ton bouton mais avec un nom différent déjà écrit dans un champ texte statique. (pour le code, tu vires texte_bouton.text = "accueil" et tu remplaces par gotoAndStop(la frame cible)) Là, plus de soucis de police

Bon taff en tout cas ^^

--------- Darkrats ---------
la loi est dure mais c'est la loi
 -------- Infograpix --------
3
cs_jennnny Messages postés 4 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 26 mars 2007
8 mars 2007 à 09:00
Salut et merci encore pour tes explications :)

J'ai réussi à faire mon menu :)

J'en profite alors pour te poser une dernière question  !
J'ai un bouton "stop" avec l'action :

on(press){
    stopAllSounds();
}

pour mon son d'ambiance qui se trouve sur une frame. Mon problème c'est que j'ai un bouton "play" et que je ne sais pas quelle action lui mettre pour qu'il relance mon son d'ambiance, que ce soit au début du morceau ou là ou il s'est stoppé !

Merci d'avance :)
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Darkrats Messages postés 212 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 12 mai 2008 1
13 mars 2007 à 09:45
hé bien tu peux mettre : objet_son.start();
3
cs_jennnny Messages postés 4 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 26 mars 2007
26 mars 2007 à 11:47
Et bien merci pour tes réponses précises.
Avec un peu de temps et beaucoup de patience je viens afin d'arriver à réaliser mon menu avec le son d'ambiance.
3
Rejoignez-nous