AS3 basics : custom contextMenu classe
Le 22 août 2008
Dans la série des petites classes utiles, voici le contextMenu.
Vous pouvez y mettre tout ce que vous souhaitez.
Dans cet exemple, j’ai ajouté :
-un copyright
-un lien vers le site de l’auteur
-la gestion du fullscreen
Five3D exemple
package com.lc.common { //import des classes nécessaires import flash.net.*; import flash.ui.ContextMenu; import flash.ui.ContextMenuItem; import flash.ui.ContextMenuBuiltInItems; import flash.events.ContextMenuEvent; import flash.display.*; public class ContextMenuLc extends Sprite { //déclaration des variables private var myContextMenu:ContextMenu; private var menuLabel0:String = "LutinCapuche@2008"; private var menuLabel1:String = "Portfolio LutinCapuche"; private var menuLabel2:String = "Enter fullscreen mode"; private var menuLabel3:String = "Exit fullscreen mode"; private var _stage:Stage; //constructeur public function ContextMenuLc(cible:MovieClip,stageCurrent:Stage) { _stage = stageCurrent; myContextMenu = new ContextMenu(); removeDefaultItems(); addCustomMenuItems(); myContextMenu.addEventListener(ContextMenuEvent.MENU_SELECT, menuSelectHandler); //j'attache le contexteMenu au clip passé en paramètre, dans l'exemple la racinecible.contextMenu = myContextMenu; } private function removeDefaultItems():void { //suppression des items par défaut myContextMenu.hideBuiltInItems(); } private function addCustomMenuItems():void { //ajout des items personnalisé et des évènements associés //le copyright var item0:ContextMenuItem = new ContextMenuItem(menuLabel0); myContextMenu.customItems.push(item0); //lien vers site de l'auteur var item1:ContextMenuItem = new ContextMenuItem(menuLabel1); item1.separatorBefore = true; myContextMenu.customItems.push(item1) item1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, gotoMyPortfolio); //activation du fullscreen var item2:ContextMenuItem = new ContextMenuItem(menuLabel2); item2.separatorBefore = true; myContextMenu.customItems.push(item2); item2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, onShowFullScreen); //desactivation du fullscreen var item3:ContextMenuItem = new ContextMenuItem(menuLabel3); item3.separatorBefore = true; myContextMenu.customItems.push(item3); item3.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, onShowNormalScreen); myContextMenu.customItems[3].enabled = false } private function menuSelectHandler(event:ContextMenuEvent):void { if (_stage.displayState == StageDisplayState.NORMAL){ event.target.customItems[2].enabled = true; // show full screen button event.target.customItems[3].enabled = false; // hide normal screen button }else { event.target.customItems[2].enabled = false; // hide full screen button event.target.customItems[3].enabled = true; // shoe normal screen button } } function onShowFullScreen(event:ContextMenuEvent):void{ _stage.displayState = StageDisplayState.FULL_SCREEN; } function onShowNormalScreen(event:ContextMenuEvent):void{ _stage.displayState = StageDisplayState.NORMAL; } private function gotoMyPortfolio () { var mySite:URLRequest = new URLRequest("http://portfolio.lutincapuche.com"); navigateToURL(mySite); } } }
Pour l'appliquer sur la scène ou sur un MovieClip :
//importation de la classe import com.lc.common.ContextMenuLc; //creation du contexte menu sur this, avec stage en paramètre pour le fullscreeen var myContexteMenu:ContextMenuLc = new ContextMenuLc(this,stage);
Flash AS3
( Vu : 24668 fois ) Commentaires
3 Réponses à “AS3 basics : custom contextMenu classe”
Répondre










Salut!
Je viens de découvrir ton blog…
Je réagis vite fait sur cette petite classe…
Je trouve dommage que la classe soit si perméable! J’entends par là qu’il eu été plus judicieux d’entrer en paramètres de la classe tout ce qui concerne les liens de site ou même le contenu, ce qui fait qu’il n’y aurai juste eu a faire un appel de classe, entrer les paramètres et basta!
Alors que là l’on se voit contraint de modifier la classe en elle-même, ce qui n’est pas très POO
(hormis pour le fullscreen je te l’accorde)
J’aurai vu quelque chose comme des paramètres:
-pour le lien vers un site >> une boolean pour www, ou non
>> une string pour l’url (exemple « lutincapuche »)
>> et une string pour l’extension (fr, com etc…)
A partir de la dans ta classe tu aurais juste a récupérer ces variables et construire l’URLRequest!
Idem pour du contenu alternatif
Sinon c’est bien de s’être penché dessus tout de même, c’est toujours utile!
++
Humm, en effet, ton commentaire est tout a fait correct, je note!
Merci,
Tous les autres tutos que que j’avais trouvé fonctionnait pas avec l’AS3 !