Tienes que crearte un "contextMenu", luego asignar la propiedad "contextMenu" del canvas al menú que hayas creado.
Pongo el ejemplo que viene en Adobe y lo trato de explicar
Un menú (ContextMenu) tiene varias opciones (ContectMenuItem) a las que hay que añadir un listener, como casi siempre
Código ActionScript :
//creamos una "opción"
var menuItem:ContextMenuItem = new ContextMenuItem("Change Color");
//le añadimos el listener, para que cuando se pulse ejecute la función "changeColor")
menuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,changeColor);
//creamos un nuevo "menú"
var customContextMenu:ContextMenu = new ContextMenu();
//Eliminamos los items por defecto
customContextMenu.hideBuiltInItems();
//añdimos la "opción" que creamos anteriormente
customContextMenu.customItems.push(menuItem);
//asignamos a la propiedad contextMenu de un "canvas", o a lo que sea dicho Menú
square.contextMenu = customContextMenu;
//¡casi se me olvida, la función
private function changeColor(evt:ContextMenuEvent):void {
trace("hola mundo")
}
Normalmente en Flex quedaría algo como
Código ActionScript :
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/08/20/using-a-custom-context-menu-with-the-flex-datagrid-control/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"
creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
[Bindable]
private var customContextMenu:ContextMenu; //la variable "customContextMenu" será accesible
//para los componentes y para todo
private function init():void {
var menuItem:ContextMenuItem = new ContextMenuItem("Change Color");
menuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,changeColor);
customContextMenu:ContextMenu = new ContextMenu();
customContextMenu.hideBuiltInItems();
customContextMenu.customItems.push(menuItem);
}
private function changeColor(evt:ContextMenuEvent):void {
trace("hola mundo")
}
]]>
</mx:Script>
<mx:Canvas id="canvas"
width="400"
contextMenu="{customContextMenu}">
</mx:Canvas>