最近手头有个项目需要屏蔽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应用程序中,不仅实现对默认右键菜单的完全屏蔽,还允许开发者根据自己的需求创建并应用自定义的右键菜单。这种方法避免了使用JavaScript进行跨域通信来实现屏蔽...
接下来,我们讨论第二种方法——完全屏蔽系统右键菜单并自定义。有时候,我们可能希望完全控制用户的右键行为,不使用任何系统默认的菜单。这时,我们需要监听鼠标右键点击事件,并手动弹出自定义菜单。以下是一个...
本Demo "Flex 3完整的右键自定义菜单" 正是为此目的而设计,它展示了如何在Flex 3环境中创建、屏蔽默认菜单并实现自定义的右键上下文菜单。 在Flex 3中,我们主要使用mx.controls.ContextMenu类来创建自定义的右键...
本文将深入探讨两种实现Flex自定义右键菜单的方法:系统右键菜单的扩展以及完全自定义的右键菜单。 1. **系统右键菜单** 系统右键菜单是在Flex应用中利用ActionScript 3.0直接添加到UI组件上的菜单项。这种实现...
本文将深入探讨如何在Flex环境中实现自定义的右键菜单,包括屏蔽浏览器的默认右键菜单,创建XML格式的多级菜单,以及设置菜单出现位置的自适应策略。 首先,我们需要了解Flex屏蔽浏览器系统右键的基本方法。在...
本项目标题为"flex自制右键菜单",描述中提到作者从网上获取了相关代码并进行改写,实现了屏蔽Flex默认的右键菜单以及动态生成右键菜单的功能。下面我们将详细探讨Flex中如何实现这一目标。 首先,Flex是由Adobe...
但如果我们想屏蔽原有的右键菜单,就需要在显示自定义菜单的同时,阻止默认的右键行为。这通常涉及到阻止浏览器的默认事件处理,可以通过在事件处理函数中调用`event.preventDefault()`来实现,但这需要对组件或舞台...
标题提到的"Flash 11.2新功能,Flex屏蔽右击菜单"是指在使用Adobe Flash Player 11.2及Flex框架进行开发时,如何阻止用户通过鼠标右键点击在应用程序上弹出默认的上下文菜单,以及如何自定义自己的右键菜单。...
在这个项目中,`rightClick.js`可能通过监听Flash对象的鼠标事件,并阻止默认的右键菜单显示,从而达到屏蔽右键的功能。开发者可能需要将这段代码嵌入到HTML页面中,并与Flash对象关联,以实现屏蔽效果。 `LICENSE....
总结来说,这篇关于“Flex的组件”的博文探讨了如何在Flex应用中屏蔽右键菜单,这是通过监听`contextmenu`事件并调用`event.preventDefault()`来实现的。同时,我们还了解了Flex项目结构中的几个关键文件和目录的...