TUTORIEL FLASH 
MX 2004 : personnaliser les menus contextuels
La dernière version de Flash autorise les développeurs à choisir quel menu contextuel afficher, et quand. Explication. (07/10/2004)

Macromedia fait depuis longtemps en sorte que les animations Flash puissent devenir de véritables applications. La dernière version de Flash fait un nouveau pas dans ce sens en rendant possible l'accès au très convoité menu contextuel, qui dans les précédentes versions ne donnait accès qu'aux fonctions de base du player Flash, sans réel rapport avec l'application elle-même, ou au choix un menu quasi-vide.

C'est désormais chose faite : vous pouvez nous seulement supprimer les éléments par défaut que vous souhaitez, mais également ajoutez les vôtres, liés à des évènement ActionScript et à votre interface. Nous allons voir comment s'y prendre.

Les classes du menu contextuel
L'ensemble des moyens d'accès au menu contextuel est confiné dans les très justement nommées classes ContextMenu et ContextMenuItems, et les méthodes qu'elles définissent. Celles-ci peuvent être accédées via les raccourcis ActionScript monMenu_cm. et monItem1_cmi..

Notez que ContextMenu dispose, entre autres, d'une sous-classe, nommée builtInItems, ayant des propriétés booléennes pour chacune des options par défaut. Voici donc comment s'y prendre pour supprimer toutes les options par défaut (sauf Paramètres et A propos) via builtInItems :

menuVide = new ContextMenu();
menuVide.builtInItems.forward_back = false;
menuVide.builtInItems.loop = false;
menuVide.builtInItems.print = false;
menuVide.builtInItems.quality = false;
menuVide.builtInItems.rewind = false;
menuVide.builtInItems.save = false;
menuVide.builtInItems.zoom = false;
_root.menu = menuVide;

On voit que créer menuVide ne suffit pas : il faut ensuite l'assigner à la propriété menu d'un MovieClip, d'un Button ou d'un TextField, à une couche (_layer1...) ou à la racine (_root, comme ici).
Utiliser builtIntItems a le mérite d'être précis, mais ContextMenu dispose d'une méthode plus directe, hideBuiltInItems() :

menuVide = new ContextMenu();
menuVide.hideBuiltInItems();
_root.menu = menuVide;


C'est l'équivalent exact du code utilisant builtInItems, mais est inutile si l'on ne souhaite, pas exemple, n'enlevez que l'option zoom...

Introduire ses propres options

Un menu personnalisé peut contenir jusqu'à 15 options. Une option dispose entre autres d'une propriété booléenne nommée enabled, qui permet de spécifier, selon la situation, si elle est utilisable ou non. Dans les deux cas, l'utilisateur la voit quand même.
Nous allons créer des options de menu qui permettent simplement d'aller à l'image-clé suivante ou précédente. Commencez par créer un nouveau document Flash avec deux images-clés, et dessinez un "1" sur la première et un "2" sur la seconde.
Dans un calque dédié, créez ensuite le code attaché à chaque image-clé. Le code pour la première image est comme suit :

stop();
reculer = function () {
  nextFrame();
  };
monMenu = new ContextMenu();
monMenu.hideBuiltInItems();
options1 = new ContextMenuItem("Page suivante", reculer);
monMenu.customItems.push(options1);
_root.menu = monMenu;

Pour la deuxième image :

stop();
avancer = function () {
  prevFrame();
  };
monMenu = new ContextMenu();
monMenu.hideBuiltInItems();
options2 = new ContextMenuItem("Page précédente", avancer);
monMenu.customItems.push(options2);
_root.menu = monMenu;

Pour chaque image-clé, on supprime les options par défaut avec hideBuiltInItems(), puis on définit une nouvelle option avec ContextMenuItem(), que nous ajoutons au menu contextuel de l'image-clé grâce à la méthode customItems.push() de notre objet monMenu. Ce dernier est ensuite attaché à la racine avec _root.menu. Attention : chaque menu est spécifique à son image clé : vous ne trouverez pas "Page suivante" dans la seconde page, et réciproquement.

  Forum

Réagissez dans les forums de JDN Développeurs

Combiné aux évènements ActionScript, cela permet de construire un véritable menu personnalisé et dynamique pour son application Flash. Nous pousserons plus loin l'exploration de cette partie de Flash MX 2004 dans un prochain article.

 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages