论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

flash禁止右键全教程

文章类别:Flash AS | 发表日期:2009-4-23 8:06:50

在做一个实验时遇到一个禁止flash的右键功能的问题。在网上找了很多方法,要不就完全不行,要不就浏览器不兼容。Google了一下国外的情况,终于找到了一个不错的方法。该方法用了javascript和as的结合,完美解决了问题。

以下是javascript部分代码:

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();  
    }  
}

以下是as部分代码:

package {  
      
    import flash.display.*;  
    import flash.external.ExternalInterface;  
   
    public classclass 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  
            }  
        }  
    }  
}

支持的浏览器有:

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
毕竟是国外的产品,似乎对某些国产浏览器支持不好,拥有最多用户的maxthon浏览器如果开启鼠标手势就不被支持。解决方法还在尝试中。

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058