当前位置:软件学习 > Flash >>

AS 一个禁止flash右键的方法

以下是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教程,As3.0 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,