as3 屏蔽右键

javascript和as的结合,完美解决了问题。

以下是javascript部分代码:

 

  1. var RightClick = { 
  2.     /** 
  3.      *  Constructor 
  4.      */  
  5.     init: function () { 
  6.         this.FlashObjectID = "customRightClick"; 
  7.         this.FlashContainerID = "flashcontent"; 
  8.         this.Cache = this.FlashObjectID; 
  9.         if(window.addEventListener){ 
  10.              window.addEventListener("mousedown", this.onGeckoMouse(), true); 
  11.         } else { 
  12.             document.getElementById(this.FlashContainerID).onmouseup = function() { document.getElementById(RightClick.FlashContainerID).releaseCapture(); } 
  13.             document.oncontextmenu = function(){ if(window.event.srcElement.id == RightClick.FlashObjectID) { return false; } else { RightClick.Cache = "nan"; }} 
  14.             document.getElementById(this.FlashContainerID).onmousedown = RightClick.onIEMouse; 
  15.         } 
  16.     }, 
  17.     /** 
  18.      * GECKO / WEBKIT event overkill 
  19.      * @param {Object} eventObject 
  20.      */ 
  21.     killEvents: function(eventObject) { 
  22.         if(eventObject) { 
  23.             if (eventObject.stopPropagation) eventObject.stopPropagation(); 
  24.             if (eventObject.preventDefault) eventObject.preventDefault(); 
  25.             if (eventObject.preventCapture) eventObject.preventCapture(); 
  26.          if (eventObject.preventBubble) eventObject.preventBubble(); 
  27.         } 
  28.     }, 
  29.     /** 
  30.      * GECKO / WEBKIT call right click 
  31.      * @param {Object} ev 
  32.      */ 
  33.     onGeckoMouse: function(ev) { 
  34.         return function(ev) { 
  35.         if (ev.button != 0) { 
  36.             RightClick.killEvents(ev); 
  37.             if(ev.target.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) { 
  38.                 RightClick.call(); 
  39.             } 
  40.             RightClick.Cache = ev.target.id; 
  41.         } 
  42.       } 
  43.     }, 
  44.     /** 
  45.      * IE call right click 
  46.      * @param {Object} ev 
  47.      */ 
  48.     onIEMouse: function() { 
  49.         if (event.button> 1) { 
  50.             if(window.event.srcElement.id == RightClick.FlashObjectID && RightClick.Cache == RightClick.FlashObjectID) { 
  51.                 RightClick.call();  
  52.             } 
  53.             document.getElementById(RightClick.FlashContainerID).setCapture(); 
  54.             if(window.event.srcElement.id) 
  55.             RightClick.Cache = window.event.srcElement.id; 
  56.         } 
  57.     }, 
  58.     /** 
  59.      * Main call to Flash External Interface 
  60.      */ 
  61.     call: function() { 
  62.         document.getElementById(this.FlashObjectID).rightClick(); 
  63.     } 
  64. }  

以下是as部分代码:

 

  1. package { 
  2.      
  3.     import flash.display.*; 
  4.     import flash.external.ExternalInterface; 
  5.   
  6.     public classclass RightClick extends Sprite 
  7.     { 
  8.          
  9.         public function RightClick() 
  10.         { 
  11.             stage.scaleMode = StageScaleMode.NO_SCALE; 
  12.             stage.align = StageAlign.TOP_LEFT; 
  13.              
  14.             var methodName:String = "rightClick"; 
  15.             var method:Function = onRightClick; 
  16.             ExternalInterface.addCallback(methodName, method); 
  17.         } 
  18.          
  19.         private function onRightClick():void { 
  20.   
  21.             var mx:int = stage.mouseX; 
  22.             var my:int = stage.mouseY; 
  23.   
  24.             if(my> 0 && my <stage.stageHeight && mx> 0 && mx <stage.stageWidth) { 
  25.                 // YOUR CODE HERE 
  26.             } 
  27.         } 
  28.     } 
posted @ 2011-03-17 18:17  rob_2010  阅读(360)  评论(0编辑  收藏  举报