Personnalisation du menu contextuel de Flash avec ContextMenu.

10 janvier 2008 par dans Action script

Le menu contextuel (clic droit) est très pratique mais avec flash, lorsque vous cliquez droit, ce qui apparait n’est pas vraiment ce qui nous intéresse…
Pour palier ce problème, Adobe (macromedia) a créé la classe ContextMenu.

Alors que peut-on insérer dans ce menu contextuel ? A peu près tout. En ce qui nous concerne, on va

  • afficher des liens
  • ouvrir un lien dans une nouvelle fenêtre
  • lancer une ou plusieurs fonctions

Exemple

Allez c’est parti.

var contextLien_cm:ContextMenu = new ContextMenu(); // on retire toutes les entrées auxquelles nous pouvons avoir accès et qui ne nous intéressent pas
contextLien_cm.hideBuiltInItems() ;

 

Il est aussi possible de les retirer un à un au cas où vous souhaiteriez en garder certaines

monContextMenu.builtInItems.forward_back = false; monContextMenu.builtInItems.loop = false; monContextMenu.builtInItems.play = false; monContextMenu.builtInItems.print = false; monContextMenu.builtInItems.quality = false; monContextMenu.builtInItems.rewind = false; monContextMenu.builtInItems.save = false; monContextMenu.builtInItems.zoom = false;

 

On ajoute les éléments au menu contextuel. options du ContextMenuItem : légende,onSelect,séparateurAvant,activé,visible

var newLien1_cmi = new ContextMenuItem("Voir le pilote",actionTetesAclaques) contextLien_cm.customItems.push(newLien1_cmi); var newLien2_cmi = new ContextMenuItem("Paris Hilton comme vous ne l’avez jamais vue",hilton ) contextLien_cm.customItems.push(newLien2_cmi); var newLien3_cmi = new ContextMenuItem("Netvibes",actionNetvibes,true) contextLien_cm.customItems.push(newLien3_cmi); var newLien4_cmi = new ContextMenuItem("Google",actionGoogle) contextLien_cm.customItems.push(newLien4_cmi);

 

Fonctions éxécutées après le clic droit

function actionTetesAclaques():Void{ getURL("http://www.tetesaclaques.tv/video.php?vid=22","_blank"); }
function hilton():Void{ getURL("http://fr.youtube.com/watch?v=iXWEOtnJUz4","_blank"); }
function actionNetvibes():Void{ getURL("http://www.netvibes.com","_blank"); }
function actionGoogle():Void{ getURL("http://www.google.fr","_blank"); }

 

On associe le menu au mc liens_mc

this.menu = contextLien_cm; this.liens_mc.menu = contextLien_cm;

 

Bon à savoir: Vous pouvez aussi avoir envie de masquer le menu contextuel. Il restera tout de même « l’accès aux paramètres personnels de l’utilisateur », et l’entrée « A propos de… ».

Avec du code actionscript :

Stage.showMenu = false

 

Lors de la publication du swf dans flash:

cochez « Afficher le menu » de l’onglet HTML

Dans le code html :

- En ajoutant/modifiant la valeur false au paramètre menu dans le code source de la page HTML
<object>
<param name= »menu » value= »false » />
<embed menu= »false » />
</object>

Télécharger le fla

Voila +++

Commentaires (2)

 

  1. AL dit :

    Bon j’arrive un peu à la bourre mais je cherche depuis longtemps quelque chose sur le contextmenu en flash alors je tente quand même de poser ma question…
    Déjà merci pour vos sources en AS c’est très sympa et très bien fait.

    Donc ma question est la suivante:
    Est-il possible de personnaliser le menu contextuel de flash en ajoutant des « sous parties » dans les items que l’on met dedans ?

    Je m’explique:
    Dans le menu contextuel par défaut de flash on a un item qui a comme nom « quality » et dans cet item il y a trois sous item qui sont « low » « high » et « best »…
    Donc est ce que quelqu’un à une idée sur comment programmer ça ?

    Merci d’avance !

  2. Niums dit :

    @ Al. Alors là, tu me poses une colle. J’avais cherché s’il était possible de le faire mais n’avais rien trouvé à l’époque. :(

Laisser un commentaire