最近手头有个项目需要屏蔽Flex鼠标右键菜单并自定义新的flex鼠标右键菜单。通过ContextMenu hideBuiltInItems,还是达不到我要的效果,那该死的几个选项还是存在,在网上搜刮了很久,发现了Google Code上有一个RightClickManager的项目。通过JavaScript与ActionScript的结合,屏蔽了右键,并调用actionscript注册方法,使用时需要修改Flex生成的html文件,加入 “wmode”, “opaque”,或者直接修改index.template.html.
上代码:
AC_FL_RunContent(
"src", "${swf}",
"id", "${application}",
"name", "${application}",
"width", "${width}",
"height", "${height}",
"align", "middle",
"menu", "false",
"wmode", "opaque",
"quality", "high",
"bgcolor", "${bgcolor}",
"allowScriptAccess", "always",
"allowNetworking", "all",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer"
);
按照自己的需要我稍做了修改,根据不同界面,出现不同的右键菜单。在RightClickManager.as文件中定义的JavaScript里面,我做了如下的修改
onIEMouse: function() {
if (event.button ==2||event.button==0) {
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;
}
}
这样子,就能在FF3,IE6,遨游,chrome2下顺利通过,(PS:我的机上就这些浏览器,其他没测)
RightClickHandles.as是用来统一管理右键菜单的单例类。RightClickMenuData.as是用于存储右键菜单内容的类。RightClickRegister.as 其实是我修改了FlexSprite.as。
使用说明:
在程序入口new 一下RightClickRegister就屏蔽掉了右键
在需要自定义右键的界面上注册右键Handle:
RightClickHandles.setHandleFunction(this, RightClickMenuData.Main_MIS,handle);
function handle(item:Object):void{
trace(item.action);
}
就会出现Main_MIS所指定的菜单内容,点击菜单后回调handle方法。并且传过来点击对象。
另外,如果你的项目对客户端中文输入有很高的要求的话,劝你不要对屏蔽右键抱太大希望。因为加入了 “wmode”, “opaque”,这对属性之后,将会对输入法造成很大的影响。本来还想解决掉右键点击时事件流的捕获问题,结果发现中文输入不了,彻底放弃了,偶滴神啊!稍后会上传源代码…源码已上传:下载地址1 下载地址2
下面说一下副作用:使用此种方法在Flex里屏蔽鼠标右键,导致的直接结果就是中文输入法不正常,啊门!
转载请注明: 出自 FlexHome
原文链接:http://flex.desizen.com/flex-custom-context-menu/
分享到:
相关推荐
flex 自定义右键菜单 多级右键菜单flex 自定义右键菜单 多级右键菜单flex 自定义右键菜单 多级右键菜单
完全屏蔽flex自带的右键菜单,实现自定义右键菜单,附件有完整可运行的例子。 这个问题折腾了一天多,在网上搜了很多资料,几乎都是一样的,转来转去,且讲的不明不白。这里我提供了可运行的全部代码,让你轻松搞定...
Flex自定义右键菜单
flex右键菜单完全屏蔽右键 可以自定义;导入后可以直接应用;绝对值; 非js屏蔽
实现右键点击事件,及完全屏闭系统右键菜单 并自定义右键菜单
Flex右键菜单 flex tree 右键菜单 导入eclipse可直接用。我使用的flex sdk 版本是flex4.5.1,更改为4.0可直接使用。
flex 右键菜单两种实现: 1.系统右键菜单,系统右键菜单项中添加菜单项 2.屏蔽系统右键菜单,自定义右键菜单
flex 右键菜单两种实现: 1.系统右键菜单,系统右键菜单项中添加菜单项 2.屏蔽系统右键菜单,自定义右键菜单
Flex 3完整的右键自定义菜单Demo
对初学者有用,一个简单的flex 自定义右键菜单
NULL 博文链接:https://lpyyn.iteye.com/blog/2054024
flex添加右键菜单实例。很经典的实例。
Flex屏蔽浏览器系统右键,实现自定义Menu的右键菜单,支持XML格式的多级菜单,以及支持菜单出现位置的自适应。欢迎大家修改,(能给出如何恢复浏览器右键菜单最好)。
flex应用程序中,默认情况下会有鼠标右击事件,该源码就是如何禁止鼠标右键的源码
Flex添加右键菜单,只是文档,里边有描述性的代码
该代码是在Flex实现右键的具体实现方法。 如有不明可发信息咨询活留言。
flex禁止鼠标右键
NULL 博文链接:https://mirabelle1211.iteye.com/blog/961255
flex3 Tree右键菜单, 前一个是flex4的, 这个滚动条好用