flex 滑鼠右鍵事件 和右鍵選單的實現

2022-04-02 00:10:30 字數 2831 閱讀 3512

flex 滑鼠右鍵事件
監聽事件的mouseevent.right_click事件

比如對某個控制項a進行監控右鍵點選事件

a.addeventlistener(mouseevent.right_click,func);

滑鼠的其他事件也可以監聽,具體見

其基本思路為:

1,在flex中利用外部介面註冊乙個函式, 作為接收外部(html)右鍵事件的入口

2,在flex應用所在的html中攔截滑鼠右鍵事件,呼叫flex外部函式,並取消事件的廣播,以阻止事件到達flex應用.

3,在flex應用程式上監聽mouseover事件,並記錄當前滑鼠所在物件

4,當入口函式接收到html傳送的右鍵事件後,模擬生成乙個滑鼠右鍵事件(buttondown = false), 併發送到當前物件

5,在物件的mousedown處理函式中,根據buttondown的標誌,分別處理滑鼠左右鍵事件

這個思路比較清晰可行, 滑鼠右鍵事件的流程為:

html滑鼠右鍵事件----flex外部函式-----模擬的滑鼠右鍵事件------相應的處理函式

具體的實現為:

1, 在flex所在的html增加2, 修改flex的mxml

private var mousetarget:displayobject;

function init()

function getmousetarget(event:menuevent):void

function openrightclick():void

function showmouseevent(event)

在修改完後,滿懷信心的進行測試,結果右鍵選單還能夠出現!試了很多辦法也不行,幸虧我的同事趙輝發現了解決方法,在這裡向他表示感謝!

具體的方法就是修改wmode引數, 將wmode設定為opaque或transparent都可以達到這個效果

ac_fl_runcontent(

"src", "playerproductinstall",

"flashvars", "mmredirecturl="+mmredirecturl+'&mmplayertype='+mmplayertype+'&mmdoctitle='+mmdoctitle+"",

"width", "100%",

"height", "100%",

"align", "middle",

"id", "flextest",

"wmode", "opaque", //////////////////////注意:這裡是關鍵

"quality", "high",

"bgcolor", "#869ca7",

"name", "flextest",

"allowscriptaccess","samedomain",

"pluginspage", ""

);

flex 滑鼠右鍵選單新增

方案1

function initrightclick()

複製**

3.在控制項裡面新增右鍵事件如:
list.addeventlistener(rightclickmanager.right_click,onlistrightclickhandler);

複製**

var menuroot:menu=menu.createmenu(list,null,false);

menuroot.width=150;

menuroot.dataprovider=new arraycollection([,

]);menuroot.labelfield="label";

menuroot.addeventlistener(menuevent.item_click,listmenuitemclick);

menuroot.show(x,y);

複製**

方案2
componentrightmenu 自己寫的乙個擴充套件類 可以快速實現flex 右鍵選單功能
import flash.ui.contextmenu;

import mx.core.uicomponent;

public class componentrightmenu

private function buildcomponentmenu(_uic:uicomponent):void

setmenu(menuitems);

}_uic.contextmenu = this.menu;

}private function get menu():contextmenu

private function setmenu(menuitems:array):void

案例:

new componentrightmenu(this,["右鍵"],[ mapreset],[false]);

public function mapreset(event:contextmenuevent):void

flex右鍵選單

引用http blog.csdn.net liyong1115 archive 2008 05 15 2447393.aspx 例子1 import flash.ui.contextmenu import flash.ui.contextmenuitem import flash.events.co...

Vue element控制滑鼠右鍵選單

1 在頁面元素繫結contextmenu事件 元素中使用 contextmenu.prevent.native openmenu event 繫結事件 template span size medium contextmenu.prevent.native openmenu event templa...

QT 建立滑鼠右鍵選單

第一步 qwidget及其子類都可有右鍵選單,首先設定qwidget與右鍵選單有關的函式setcontextmenupolicy qt contextmenupolicy列舉型別包括 qt defaultcontextmenu,qt nocontextmenu,qt preventcontextme...