javascript和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  
            }  
        }  
    }  
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章