Forum de discussion
Forum « Flash et Shockwave » (archives)
Re: MenuBar
Envoyé: 24 décembre 2004, 12h04 par Oznog
Effectivement, depuis la version 2.0 de l'Action Script et son orientation objet, les scripts peuvent sembler plus dificile à saisir. En plus, on mélange ça souvent avec une composante, (components), mais c'est bien plus simple.
Une composante est à la base un objet pour simplifier la programmation. Qu'il suffit de glisser sur la scène. Celui-ci utilise un document XML pour simplifier aussi la configuration.
Le code http://www.darronschall.com/weblog/archives/000062.cfm fonctionne très bien. Il démontre plusieurs possibilité, avec icône, avec plusieurs sous-niveau de menu, bouton à cocher ou radio (le point change de place) et même un exemple de chaine XML (le menu expand me) qui pourrait être en passant un document XML extern.
Ceci dit à chaque fois que tu cré un item, tu cré en même temps une "instance" qui est utilisé plus tard. Note aussi l'état et groupe pour les types "radio et cochage".
Et enfin, chaque objet est associé à un "écouteur" pour gérer l'action.
MAIS LE MENU LUI MÊME FONCTIONNE TOUT SEUL.
Exemple simple.
1. Tu dois avoir Flash MX 2004 Professionnel.
2. Glisser sur la scène une instance du menu et lui donner le nom "monMenu".
3. Copier ce code dasn la fenêtre ActionFrame sur le premier cadre.
// Initialisation d'une composante MenuBar.
// Flash MX04 Pro
// Trucsweb.com
import mx.controls.Menu;
import mx.controls.MenuBar;
import mx.controls.TextArea;
// L'instance du menu sur la scène
var monMenu:MenuBar;
// Objet Menu
var oChoix1:Menu;
// Objet Sous-menu (de type objet...)
var oSousMenu:Object;
var oChoix2:Menu;
var oChoix3:Menu;
// Choix 1
oChoix1 = monMenu.addMenu("Choix 1.0.0");
oChoix1.addMenuItem({label:"Choix 1.1.0", instanceName:"choix110"});
oChoix1.addMenuItem({label:"Choix 1.2.0", instanceName:"choix120"});
// Choix avec sous-menu.
oSousMenu = oChoix1.addMenuItem({label:"Choix 1.3.0", instanceName:"choix130"});
oSousMenu.addMenuItem({label: "Choix 1.3.1", instanceName:"choix131"});
oSousMenu.addMenuItem({label: "Choix 1.3.2", instanceName:"choix132"});
// Choix 2
oChoix2 = monMenu.addMenu("Choix 2.0.0");
oChoix2.addMenuItem({label:"Choix 2.1.0", instanceName:"choix210"});
oChoix2.addMenuItem({label:"Choix 2.2.0", instanceName:"choix220"});
// Choix 3
oChoix3 = monMenu.addMenu("Choix 3.0.0");
oChoix3.addMenuItem({label:"Choix 3.1.0", instanceName:"choix310"});
oChoix3.addMenuItem({label:"Choix 3.2.0", instanceName:"choix320"});
oChoix3.addMenuItem({label:"Choix 3.3.0", instanceName:"choix330"});
oChoix3.addMenuItem({label:"Choix 3.4.0", instanceName:"choix340"});
Voilà, ton ceci fait le menu. Il fonctionne tout seul. Il ne restequ'à associer les actions. Tu dois créer un "écouteur"
// À copier sous le premier code
// Un objet écouteur
listener = new Object();
listener.change = function(evt){
trace("Nom de l'item ou label: "+evt.menuItem.attributes.label);
trace("Nom de l'instance: "+evt.menuItem.attributes.instanceName);
}
// Attache l'écouteur à chaque menu.
oChoix1.addEventListener("change", listener);
oChoix2.addEventListener("change", listener);
oChoix3.addEventListener("change", listener);
Ciao
Oznog
Réponses
|