Recherche
Peut être aimerez-vous...
Sections du site
Sites Neamar
Lisez ces articles !
| AS3 Snippet : modifier le menu contextuel |
|
| Programmation et tuning - as3 |
| Écrit par Neamar |
| Mercredi, 09 Juin 2010 14:36 |
|
Le menu contextuel, c'est ce petit menu qui s'affiche quand on fait un clic droit sur un objet ; le plus souvent pour afficher des options comme couper / coller. Pour Flash, le clic droit est un peu bloqué : on ne peut pas tout modifier, contrairement à ce qu'on pourrait faire en Javascript. Mais on peut tout de même ajouter des éléments, et éviter l'affichage des options par défaut (« Zoom avant », « Zoom arrière »). Pour cela, AS3 nous met deux classes à disposition : ContextMenu et ContextMenuItem (il y en a d'autre, mais ces deux là sont primordiales). L'idée est simple : ContextMenu décrit le menu contextuel, et ContextMenuItem permet d'ajouter des éléments. Voyons ça plus en détail. Masquer les éléments par défautIl s'agit ici de faire disparaître les options « Précédent », « Suivant », « Zoom avant »… disponibles par défaut. On initialise un objet ContextMenu, et on appelle sa méthode hideBuiltInItems(). var ClicDroit:search?q=ContextMenu%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenu.html&filter=0&num=100&btnI=lucky">ContextMenu = new search?q=ContextMenu%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenu.html&filter=0&num=100&btnI=lucky">ContextMenu(); ClicDroit.hideBuiltInItems(); Ajouter des éléments personnalisésPlus intéressant, on peut ajouter des éléments personnalisés. Voyons par exemple comment ajouter des éléments « Avancer d'un niveau » et « Reculer d'un niveau », et les connecter à des listeners : var menuItemRestart:search?q=ContextMenuItem%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenuItem.html&filter=0&num=100&btnI=lucky">ContextMenuItem = new search?q=ContextMenuItem%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenuItem.html&filter=0&num=100&btnI=lucky">ContextMenuItem("Recommencer le niveau"); var menuItemPrevious:search?q=ContextMenuItem%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenuItem.html&filter=0&num=100&btnI=lucky">ContextMenuItem = new search?q=ContextMenuItem%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenuItem.html&filter=0&num=100&btnI=lucky">ContextMenuItem("Reculer d'un niveau"); var menuItemNext:search?q=ContextMenuItem%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenuItem.html&filter=0&num=100&btnI=lucky">ContextMenuItem = new search?q=ContextMenuItem%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenuItem.html&filter=0&num=100&btnI=lucky">ContextMenuItem("Avancer d'un niveau"); var myMenu:search?q=ContextMenu%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenu.html&filter=0&num=100&btnI=lucky">ContextMenu = new search?q=ContextMenu%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenu.html&filter=0&num=100&btnI=lucky">ContextMenu(); //Configurer le menu clic droit //Connecter l'évenement "clic sur le menu" avec des fonctions (non montrées ici) menuItemRestart.addEventListener(search?q=ContextMenuEvent%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenuEvent.html&filter=0&num=100&btnI=lucky">ContextMenuEvent.MENU_ITEM_SELECT,getSameLevel); menuItemPrevious.addEventListener(search?q=ContextMenuEvent%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenuEvent.html&filter=0&num=100&btnI=lucky">ContextMenuEvent.MENU_ITEM_SELECT,getPreviousLevel); menuItemNext.addEventListener(search?q=ContextMenuEvent%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:ContextMenuEvent.html&filter=0&num=100&btnI=lucky">ContextMenuEvent.MENU_ITEM_SELECT,getNextLevel); //Ajouter les éléments dans le menu clic droit. myMenu.customItems.push(menuItemRestart); myMenu.customItems.push(menuItemNext); myMenu.customItems.push(menuItemPrevious); contextMenu = myMenu; Vous pouvez à tout moment interagir avec vos menus personnalisés, par exemple pour les rendre inactifs (propriété enabled) ou les masquer (visible) Voilà qui devrait suffire pour une utilisation basique, RTFM pour une utilisation plus avancée ; par exemple pour masquer seulement certains éléments du menu par défaut ou ajouter des séparateurs... |
