1.自定义右键菜单注册类:  项目中新增注册类 RightClickManager,代码如下: 
 复制代码 代码如下:   package com.siloon.plugin.rightClick  {  import flash.display.DisplayObject;  import flash.display.InteractiveObject;  import flash.events.ContextMenuEvent;  import flash.events.MouseEvent;  import flash.external.ExternalInterface;  import mx.core.Application;  public class RightClickManager  {  static private var rightClickTarget:DisplayObject;  static public const RIGHT_CLICK:String = "rightClick";  static private const javascript:XML =  <script>  <![CDATA[  /**  *  * Copyright 2007  *  * Paulius Uza  *   *  * Dan Florio  *   *  * Project website:  *   *  * --  * RightClick for Flash Player.  * Version 0.6.2  *  */  function(flashObjectId)  {  var RightClick = {  /**  * Constructor  */  init: function (flashObjectId) {  this.FlashObjectID = flashObjectId;  this.Cache = this.FlashObjectID;  if(window.addEventListener){  window.addEventListener("mousedown", this.onGeckoMouse(), true);  } else {  document.getElementById(this.FlashObjectID).parentNode.onmouseup = function() { document.getElementById(RightClick.FlashObjectID).parentNode.releaseCapture(); }  document.oncontextmenu = function(){ if(window.event.srcElement.id == RightClick.FlashObjectID) { return false; } else { RightClick.Cache = "nan"; }}  document.getElementById(this.FlashObjectID).parentNode.onmousedown = RightClick.onIEMouse;  }  },  /**  * GECKO / WEBKIT event overkill  * @param {Object} eventObject  */  killEvents: function(eventObject) {  if(eventObject) {  if (eventObject.stopPropagation) eventObject.stopPropagation();  if (eventObject.preventDefault) eventObject.preventDefault();  if (eventObject.preventCapture) eventObject.preventCapture();  if (eventObject.preventBubble) eventObject.preventBubble();  }  },  /**  * GECKO / WEBKIT call right click  * @param {Object} ev  */  onGeckoMouse: function(ev) {  return function(ev) {  if (ev.button != 0) {  RightClick.killEvents(ev);  if(ev.target.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) {  RightClick.call();  }  RightClick.Cache = ev.target.id;  }  }  },  /**  * IE call right click  * @param {Object} ev  */  onIEMouse: function() {  if (event.button > 1) {  if(window.event.srcElement.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) {  RightClick.call();  }  document.getElementById(RightClick.FlashObjectID).parentNode.setCapture();  if(window.event.srcElement.id)  RightClick.Cache = window.event.srcElement.id;  }  },  /**  * Main call to Flash External Interface  */  call: function() {  document.getElementById(this.FlashObjectID).rightClick();  }  }  RightClick.init(flashObjectId);  }  ]]>  </script>;  public function RightClickManager()  {  return;  }  static public function regist() : Boolean  {  if (ExternalInterface.available)  {  ExternalInterface.call(javascript, ExternalInterface.objectID);  ExternalInterface.addCallback("rightClick", dispatchRightClickEvent);  Application.application.addEventListener(MouseEvent.MOUSE_OVER,mouseOverHandler);  }// end if  return true;  }  static private function mouseOverHandler(event:MouseEvent) : void  {  //rightClickTarget = DisplayObject(event.target);  rightClickTarget = InteractiveObject(event.target);  return;  }  static private function dispatchRightClickEvent() : void  {  var event:MouseEvent;  if (rightClickTarget != null)  {  event = new MouseEvent(RIGHT_CLICK, true, false, rightClickTarget.mouseX, rightClickTarget.mouseY);  //event = new ContextMenuEvent(RIGHT_CLICK, true, false, rightClickTarget as InteractiveObject, rightClickTarget as InteractiveObject);  rightClickTarget.dispatchEvent(event);  }// end if  return;  }  }  } 
    2. 打开自己的Flex工程下的html-template文件夹下的index.template.html文件(右击-Open With-Text Editor),在var params = {};语句的下面添加下面的语句:  params.wmode = "opaque";//屏蔽系统右键菜单的关键  --------------------------------------------------------------------------------  3. 在主程序文件中引入: 
 复制代码 代码如下:   //初始化  protected function init():void  {  if (!rightClickRegisted)  {  maxNumText.text=rightClickRegisted.toString();  RightClickManager.regist();  rightClickRegisted = true;  }  this.addEventListener(RightClickManager.RIGHT_CLICK,rightClickHandler);  maxNumText.text+="init";  }  //创建菜单项  private function createMenuItems():Array  {  var menuItems:Array = new Array();  var menuItem:Object;  menuItem = new Object;  menuItem.label = '刷新'; //菜单项名称  //menuItem.itemIcon = this.menu_SX;//菜单项图标  menuItems.push(menuItem);  return menuItems;  }  //生成右键菜单  private function initMenu():void  {  menu = Menu.createMenu(this, createMenuItems(), false);  //menu.iconField="itemIcon";//右键菜单的图标  //menu.labelField="label"; //右键菜单的名称  menu.variableRowHeight = true;  menu.width=100;  menu.addEventListener(MenuEvent.ITEM_CLICK, menuItemSelected); //右键菜单的事件  var point:Point = new Point(mouseX,mouseY);  point = localToGlobal(point);  menu.show(point.x,point.y); //显示右键菜单  maxNumText.text="initMenu";  }  //删除右键菜单  private function removeMenu():void  {  if(menu!=null)  {  menu.hide();  menu.removeEventListener(MenuEvent.ITEM_CLICK,menuItemSelected);  menu=null;  }  maxNumText.text="removeMenu";  }  //菜单项点击事件  private function menuItemSelected(event:MenuEvent):void  {  var menuItem:Object = event.menu.selectedItem as Object;  //……  switch(menuItem.label)  {  case "刷新":  addLine();  break;  // ……  }  }  private function addLine():void  {  maxNumText.text="addLine";  }  //控件右击事件  private function rightClickHandler(event:MouseEvent):void  {  //tree_onRightClicked(event);  maxNumText.text="rightClickHandler0";  removeMenu();  initMenu();  maxNumText.text="rightClickHandler";  } 
    4.完整代码如下:  示例代码文件                        (编辑:滁州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |