广州电脑培训_电脑培训班_电脑培训课程-北大青鸟电脑学校
当前位置:网站首页 > 电脑教程 > 正文

电脑培训:Flex自定义右键菜单-1屏蔽默认菜单

作者:广州电脑培训发布时间:2020-09-02分类:电脑教程浏览:964


导读:  不要试图改变flash插件自带的右键菜单,没有办法解决  自带的右键菜单坏处大大  1.不能去掉默认的几项(关于)  2.不能实现多层  只能使用js屏蔽掉...

  不要试图改变flash插件自带的右键菜单,没有办法解决

  自带的右键菜单坏处大大

  1.不能去掉默认的几项(关于)

  2.不能实现多层

  只能使用js屏蔽掉默认右键事件,然后弹出自己的右键菜单来实现

  搜索了半天,找了个可行的方案,实现第一步:

  1.屏蔽默认菜单,并响应右键事件

  var RightClick = {

  /**

  * Constructor

  */

  init: function () {

  this.FlashObjectID = "customRightClick";

  this.FlashContainerID = "flashcontent";

  this.Cache = this.FlashObjectID;

  if(window.addEventListener){

  window.addEventListener("mousedown", this.onGeckoMouse(), true);

  } else {

  document.getElementById(this.FlashContainerID).onmouseup = function() { document.getElementById(RightClick.FlashContainerID).releaseCapture(); }

  document.oncontextmenu = function(){ if(window.event.srcElement.id == RightClick.FlashObjectID) { return false; } else { RightClick.Cache = "nan"; }}

  document.getElementById(this.FlashContainerID).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.FlashContainerID).setCapture();

  if(window.event.srcElement.id)

  RightClick.Cache = window.event.srcElement.id;

  }

  },

  /**

  * Main call to Flash External Interface

  * 'flexview_rightClick'

  */

  call: function() {

  document.getElementById(this.FlashObjectID).flexview_rightClick();

  }

  }

  Flash Player 10 required

  package com

  {

  import flash.display.*;

  import flash.external.ExternalInterface;

  public class RightClick extends Sprite

  {

  public function RightClick()

  {

  var methodName:String = "flexview_rightClick";

  var method:Function = onRightClick;

  ExternalInterface.addCallback(methodName, method);

  }

  private function onRightClick():void {

  var mx:int = stage.mouseX;

  var my:int = stage.mouseY;

  trace(mx + ":" + my);

  if(my> 0 && my 0 && mx

  // YOUR CODE HERE

  }

  }

  }

  }

  ――广州电脑培训学校


电脑教程排行
最近发表
标签列表