亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Flex > 正文

Flex自定義右鍵菜單具體實現

2024-09-08 18:17:17
字體:
來源:轉載
供稿:網友
1.自定義右鍵菜單注冊類:
項目中新增注冊類 RightClickManager,代碼如下:
復制代碼 代碼如下:

package com.siloon.plugin.rightClick
{
import flash.display.DisplayObject;
import flash.display.InteractiveObject;
import flash.events.ContextMenuEvent;
import flash.events.MouseEvent;
import flash.external.ExternalInterface;
import mx.core.Application;
public class RightClickManager
{
static private var rightClickTarget:DisplayObject;
static public const RIGHT_CLICK:String = "rightClick";
static private const javascript:XML =
<script>
<![CDATA[
/**
*
* 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
*
*/
function(flashObjectId)
{
var RightClick = {
/**
* Constructor
*/
init: function (flashObjectId) {
this.FlashObjectID = flashObjectId;
this.Cache = this.FlashObjectID;
if(window.addEventListener){
window.addEventListener("mousedown", this.onGeckoMouse(), true);
} else {
document.getElementById(this.FlashObjectID).parentNode.onmouseup = function() { document.getElementById(RightClick.FlashObjectID).parentNode.releaseCapture(); }
document.oncontextmenu = function(){ if(window.event.srcElement.id == RightClick.FlashObjectID) { return false; } else { RightClick.Cache = "nan"; }}
document.getElementById(this.FlashObjectID).parentNode.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.FlashObjectID).parentNode.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();
}
}
RightClick.init(flashObjectId);
}
]]>
</script>;
public function RightClickManager()
{
return;
}
static public function regist() : Boolean
{
if (ExternalInterface.available)
{
ExternalInterface.call(javascript, ExternalInterface.objectID);
ExternalInterface.addCallback("rightClick", dispatchRightClickEvent);
Application.application.addEventListener(MouseEvent.MOUSE_OVER,mouseOverHandler);
}// end if
return true;
}
static private function mouseOverHandler(event:MouseEvent) : void
{
//rightClickTarget = DisplayObject(event.target);
rightClickTarget = InteractiveObject(event.target);
return;
}
static private function dispatchRightClickEvent() : void
{
var event:MouseEvent;
if (rightClickTarget != null)
{
event = new MouseEvent(RIGHT_CLICK, true, false, rightClickTarget.mouseX, rightClickTarget.mouseY);
//event = new ContextMenuEvent(RIGHT_CLICK, true, false, rightClickTarget as InteractiveObject, rightClickTarget as InteractiveObject);
rightClickTarget.dispatchEvent(event);
}// end if
return;
}
}
}

2. 打開自己的Flex工程下的html-template文件夾下的index.template.html文件(右擊-Open With-Text Editor),在var params = {};語句的下面添加下面的語句:
params.wmode = "opaque";//屏蔽系統右鍵菜單的關鍵
--------------------------------------------------------------------------------
3. 在主程序文件中引入
復制代碼 代碼如下:

//初始化
protected function init():void
{
if (!rightClickRegisted)
{
maxNumText.text=rightClickRegisted.toString();
RightClickManager.regist();
rightClickRegisted = true;
}
this.addEventListener(RightClickManager.RIGHT_CLICK,rightClickHandler);
maxNumText.text+="init";
}
//創建菜單項
private function createMenuItems():Array
{
var menuItems:Array = new Array();
var menuItem:Object;
menuItem = new Object;
menuItem.label = '刷新'; //菜單項名稱
//menuItem.itemIcon = this.menu_SX;//菜單項圖標
menuItems.push(menuItem);
return menuItems;
}
//生成右鍵菜單
private function initMenu():void
{
menu = Menu.createMenu(this, createMenuItems(), false);
//menu.iconField="itemIcon";//右鍵菜單的圖標
//menu.labelField="label"; //右鍵菜單的名稱
menu.variableRowHeight = true;
menu.width=100;
menu.addEventListener(MenuEvent.ITEM_CLICK, menuItemSelected); //右鍵菜單的事件
var point:Point = new Point(mouseX,mouseY);
point = localToGlobal(point);
menu.show(point.x,point.y); //顯示右鍵菜單
maxNumText.text="initMenu";
}
//刪除右鍵菜單
private function removeMenu():void
{
if(menu!=null)
{
menu.hide();
menu.removeEventListener(MenuEvent.ITEM_CLICK,menuItemSelected);
menu=null;
}
maxNumText.text="removeMenu";
}
//菜單項點擊事件
private function menuItemSelected(event:MenuEvent):void
{
var menuItem:Object = event.menu.selectedItem as Object;
//……
switch(menuItem.label)
{
case "刷新":
addLine();
break;
// ……
}
}
private function addLine():void
{
maxNumText.text="addLine";
}
//控件右擊事件
private function rightClickHandler(event:MouseEvent):void
{
//tree_onRightClicked(event);
maxNumText.text="rightClickHandler0";
removeMenu();
initMenu();
maxNumText.text="rightClickHandler";
}

4.完整代碼如下
示例代碼文件
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频中文字幕91| 亚洲四色影视在线观看| 久久精品在线视频| 国产免费一区视频观看免费| 亚洲色图五月天| 精品亚洲一区二区三区在线播放| 国产97在线亚洲| 成人黄色免费网站在线观看| 日韩欧美精品中文字幕| 亚洲xxxx视频| 成人www视频在线观看| 欧美野外猛男的大粗鳮| 亚洲天堂av综合网| 欧美激情网友自拍| 日韩中文字幕在线免费观看| 中日韩美女免费视频网址在线观看| 91在线免费网站| 国产精品视频久| 日韩成人在线视频网站| 欧洲亚洲在线视频| 97国产真实伦对白精彩视频8| 久久99精品久久久久久青青91| 91免费精品国偷自产在线| 深夜福利亚洲导航| 日本一本a高清免费不卡| 日韩欧美中文字幕在线播放| 青草青草久热精品视频在线网站| 日韩成人中文电影| 久久免费视频网站| 亚洲美女免费精品视频在线观看| 国产精品9999| 日韩av在线一区二区| 久久久女人电视剧免费播放下载| 久久久久免费视频| 91伊人影院在线播放| 欧美大片va欧美在线播放| 黄色精品在线看| 91精品国产91久久久久久最新| 亚洲精品国精品久久99热| 国产精品扒开腿做爽爽爽男男| 亚洲精品不卡在线| 欧美日韩视频免费播放| 亚洲免费视频在线观看| 97在线视频观看| 中文字幕国产亚洲| 日韩精品视频在线观看免费| 久久天堂av综合合色| 亚洲人成网在线播放| 日韩中文视频免费在线观看| 91视频国产高清| 欧美在线亚洲一区| 久久综合国产精品台湾中文娱乐网| 一区二区亚洲欧洲国产日韩| 欧美激情第1页| 精品一区二区三区电影| 国产日韩欧美自拍| 欧美国产日韩精品| 亚洲风情亚aⅴ在线发布| 免费不卡欧美自拍视频| 中文字幕自拍vr一区二区三区| 久久理论片午夜琪琪电影网| 成人中心免费视频| 久久久精品一区二区三区| 97视频免费在线看| 欧美高清视频在线观看| 欧美在线视频导航| 欧美国产精品人人做人人爱| 久久久久久12| 亚洲欧美日韩中文在线制服| 欧美激情xxxx| 亚洲成人三级在线| 欧美黄色www| 隔壁老王国产在线精品| 日韩精品欧美国产精品忘忧草| 亚洲国产中文字幕在线观看| 亚洲伦理中文字幕| 欧美日韩中文字幕| 1769国内精品视频在线播放| 日韩欧美在线第一页| 国产成人精品久久二区二区| 亚洲精品一二区| 久久久这里只有精品视频| 欧美午夜女人视频在线| 久久精品小视频| 欧美高清videos高潮hd| 九九热99久久久国产盗摄| 97色在线视频观看| 自拍偷拍亚洲欧美| 中文字幕av一区二区| 久久精品久久久久| 亚洲a级在线观看| 国产精品久久久久久影视| 好吊成人免视频| 亚洲在线观看视频网站| 欧美成人午夜免费视在线看片| 日韩在线观看成人| 久久久成人av| 亚洲精品国产美女| 国产69久久精品成人看| 国产精品美女999| 91系列在线播放| 欧美激情久久久| 亚洲激情在线观看| 91九色精品视频| 欧美激情中文字幕在线| 欧美一级片在线播放| 超碰日本道色综合久久综合| 欧美午夜精品久久久久久浪潮| 亚洲人成网站在线播| 日韩一级裸体免费视频| 国产一区二区美女视频| 久久久综合免费视频| 亚洲999一在线观看www| 欧美性极品xxxx娇小| 国产精品久久久亚洲| 在线播放国产一区二区三区| 日韩视频免费大全中文字幕| 国产91亚洲精品| 色综合久久天天综线观看| 成人有码视频在线播放| 欧美精品videos性欧美| 亚洲第一免费播放区| 久久伊人精品一区二区三区| 日韩精品小视频| 成人h片在线播放免费网站| 国产亚洲在线播放| 亚洲国产精品字幕| 欧美日韩一区二区在线播放| 久久久久久久一区二区三区| 97在线视频一区| 日韩在线欧美在线| 青青草国产精品一区二区| 欧美午夜激情小视频| 91系列在线观看| 国产精品第3页| 伊人亚洲福利一区二区三区| 国产精品午夜一区二区欲梦| 夜夜嗨av色一区二区不卡| 亚洲欧美另类在线观看| 成人写真视频福利网| 国产三级精品网站| 宅男66日本亚洲欧美视频| 18性欧美xxxⅹ性满足| 一区国产精品视频| 2019亚洲男人天堂| 国产精品视频在线观看| 久久人人爽人人爽人人片亚洲| 91国产精品电影| 日本不卡免费高清视频| 日韩免费在线电影| 555www成人网| 91sa在线看| 欧美自拍视频在线观看| 一区三区二区视频| 8090理伦午夜在线电影| 亚洲国产欧美日韩精品| 久久免费观看视频| 26uuu另类亚洲欧美日本一| 国产精品福利无圣光在线一区| 亚洲欧洲高清在线| 国产精品久久久久久中文字| 国产精品欧美久久久| 精品国产91乱高清在线观看| 97精品一区二区三区|