AS3屏蔽Flash日的右键菜单

2007-12-06 10:15:02

JS部分 [code]/** * * Copyright 2007 * * Paulius Uza * http://www.uza.lt * * Dan Florio * http://www.polygeek.com * * Project website: * http://code.google.com/p/custom-context-menu/ * * -- * RightClick for Flash Player. * Version 0.6.2 * */ 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 */ call: function() { document.getElementById(this.FlashObjectID).rightClick(); } } [/code] AS部分[code]package { import flash.display.*; import flash.external.ExternalInterface; public class RightClick extends Sprite { public function RightClick() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; var methodName:String = "rightClick"; var method:Function = onRightClick; ExternalInterface.addCallback(methodName, method); } private function onRightClick():void { var mx:int = stage.mouseX; var my:int = stage.mouseY; if(my> 0 && my <stage.stageHeight && mx> 0 && mx <stage.stageWidth) { // YOUR CODE HERE } } } } [/code] [url=http://custom-context-menu.googlecode.com/files/RightClick_0.6.2.zip]下载 [/url]code google [url=http://www.uza.lt/rightclick/index.php]Demo演示[/url] 蓝色的块是Flash哦 系统测试通过: WINDOWS VISTA Internet Explorer 7.0.6001 (16549) Firefox 2.0.0.6 (with mouse gestures disabled) Maxthon 2 (with mouse gestures disabled) Safari 3.0.3 (522.15.5) Windows XP SP2 Internet Explorer 6 Internet Explorer 7 Maxthon 2 (with mouse gestures disabled) FireFox 2 (with mouse gestures disabled) Safari 3 Netscape 8 Mac OSX 10.4.10 (Intel) Firefox 2 Safari 3.0.3