- 浏览: 107273 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
yyzz1986:
楼主 。貌似发现你的代码有点小问题 。
客户端中文有乱码。
...
flex与java之间socket通信的教程4 -
hpyhgz:
写的不错啊,但是用ImageIO读图片,会有一部分色彩丢失的, ...
Java程序对图片的各种处理 -
远去的渡口:
LZ辛苦了,学习一下
初次接触flex,看到你的博客里面有关f ...
Flex + LCDS + Java 入门教程 -
BelieveTheGod:
...
jsp验证码生成以及刷新 -
chian_xxp:
作者强啊,能否写出点实例呢/
看作者的这些方法,发觉自己的知识 ...
提升JSP页面响应速度的七大秘籍绝招
屏蔽FLEX右键菜单以及实现自定义的FLEX右键功能
完全屏蔽FLEX右键菜单比当初想象的要难一些,因为大多数FLEX文档中仅仅介绍了如何隐藏一部分FLEX右键菜单,例如:
var contextMenu : ContextMenu = new ContextMenu();
contextMenu.hideBuiltInItems(); // 隐藏一些内建的鼠标右键菜单项
但是这个功能不能隐藏"设置"和"关于"右键菜单,而在一些应用中,希望能够利用鼠标右键完成一些操作功能,例如绘图程序和游戏等,这时候右键菜单就是" 欲除之而后快"了.但在FLEX中监听mouseDown捕获不了右键事件,而在ContextMenu的Select事件也无法屏蔽.
在网上发现了一篇相关的BLOG,地址如下:
http://www.flex-flex.net/blog/article.asp?id=12
其基本思路为:
1,在FLEX中利用外部接口注册一个函数, 作为接收外部(HTML)右键事件的入口
2,在FLEX应用所在的HTML中拦截鼠标右键事件,调用FLEX外部函数,并取消事件的广播,以阻止事件到达FLEX应用.
3,在FLEX应用程序上监听mouseOver事件,并记录当前鼠标所在对象
4,当入口函数接收到HTML发送的右键事件后,模拟生成一个鼠标右键事件(buttonDown = false), 并发送到当前对象
5,在对象的mouseDown处理函数中,根据buttonDown的标志,分别处理鼠标左右键事件
这个思路比较清晰可行, 鼠标右键事件的流程为:
HTML鼠标右键事件----FLEX外部函数-----模拟的鼠标右键事件------相应的处理函数
具体的实现为:
1, 在FLEX所在的HTML增加
<script>
function onNsRightClick(e){
if(e.which == 3){
FlexTest.openRightClick();
e.stopPropagation();
}
return false;
}
function onIeRightClick(e){
if(event.button > 1){
FlexTest.openRightClick();
parent.frames.location.replace('javascript: parent.falseframe');
}
return false;
}
if(navigator.appName == "Netscape"){
document.captureEvents(Event.MOUSEDOWN);
document.addEventListener("mousedown", onNsRightClick, true);
}
else{
document.onmousedown=onIeRightClick;
}
</script>
2, 修改FLEX的MXML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="init()" mouseOver="getMouseTarget(event)" >
private var mouseTarget:DisplayObject;
function init()
{
ExternalInterface.addCallback("openRightClick", openRightClick);
}
function getMouseTarget(event:MenuEvent):void
{
mouseTarget = DisplayObject(event.target);
}
function openRightClick():void
{
var e:MouseEvent = new MouseEvent(MouseEvent.MOUSE_DOWN, true, false, mouseTarget.mouseX, mouseTarget.mouseY);
mouseTarget.dispatchEvent(e);
}
function showMouseEvent(event)
{
if(event.buttonDown == true)
Alert.show("Left");
else
Alert.show("Right");
}
<mx:Image x="0" y="10" id="bbb" name="bbb" source="res/15.jpg" mouseDown="showMouseEvent(event)" height="247"/>
在修改完后,满怀信心的进行测试,结果右键菜单还能够出现!试了很多办法也不行,幸亏我的同事赵辉发现了解决方法,在这里向他表示感谢!
具体的方法就是修改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",
"type", "application/x-shockwave-flash",
"pluginspage", "http://www.adobe.com/go/getflashplayer"
);
ADOBE文档中对wmode的解释:
Sets the Window Mode property of the SWF file for transparency, layering, and positioning in the browser. Valid values of wmode are window, opaque, and transparent.
Set to window to play the SWF in its own rectangular window on a web page.
Set to opaque to hide everything on the page behind it.
Set to transparent so that the background of the HTML page shows through all transparent portions of the SWF file. This can slow animation performance.
To make sections of your SWF file transparent, you must set the alpha property to 0. To make your application's background transparent, set the alpha property on the <mx:Application> tag to 0.
The wmode property is not supported in all browsers and platforms.
现在就可以灵活的使用鼠标右键功能了!在IE6和FF2.0中测试通过
当然还有几个问题:
1,据JOVE的介绍,在IE7中需要添加
event.stopPropagation();
event.cancelBubble = true;
因此还需要对浏览器进行一下判断,我没有装IE7,也就没有测,需要的朋友可以测试一下
2,一些有用的右键菜单,例如TEXT中能够自动弹出剪贴复制等功能的右键菜单,也没有了,真是有一利必有一弊啊! 不过这个还比较简单,可以再模拟一个ContextMenu的Select事件.
3, 对初始化流程应再进行一些改进,以保证FLEX的加载和外部接口建立成功后,再加以使用.
发表评论
-
AS3安全沙箱,跨域加载SWF
2011-12-19 12:47 2149AS3的安全沙箱的确是让人很无奈,本篇文章仅用于解决一个特定的 ... -
当flex builder无法运行或者flashplayer无法安装时
2010-08-20 11:15 1756flashplayer无法安装,提示版本问题时。打开注册表HK ... -
flex与后台交互的4种方法
2009-04-18 14:06 1419一、HTTPService 程序代码: <?xm ... -
Flex + LCDS + Java 入门教程
2009-04-09 16:12 1605一.引 很多人在帖子和群中问到过一些关于建立F ... -
第一个ActionScript MySQL Driver:asSQL原理与实践
2009-03-31 14:14 1326熟悉Flex 的开发者都知道,在Flex中不能直接访问数据库, ... -
flex与j2ee交互
2009-03-31 14:12 1054MXML 程序代码 <?xml version=&qu ... -
Flex远程调用机制RemoteObject应用技巧
2009-03-31 14:11 1045本文主要讨论Flex在客户端与J2EE中间层数据交互的过程。 ... -
对ActionScript语言函数重载的理解
2009-03-31 14:11 1213ActionScript与JavaScript类似,都是符合E ... -
用Adobe Flex 2和Java创建富Internet应用
2009-03-31 14:10 1496用Adobe Flex 2和Java创建富Internet应用 ... -
12个Flex常用功能代码
2009-03-31 14:09 7881。 复制内容到系统剪贴板 CODE: System.set ... -
Flex 中 12 个简单但是很有用的函数
2009-03-31 14:08 902No.1 Copy content to clipboard: ... -
Flex加载图片的常用的几种方式
2009-03-31 14:06 1655<?xml version="1.0" ... -
FlexApplication初始化顺序
2009-03-31 14:05 692preloader->systemManager-> ... -
creationPolicy属性
2009-03-31 14:04 1089导航条容器内置推迟实 ... -
Flex 窗口最小化,最大化,拖动
2009-03-31 14:02 5261想当初,我不知道如何用flex怎么做透明air程序,非常郁闷, ... -
在Flex中嵌入完整HTML页面
2009-03-31 13:57 1608有时候我们需要在Flex应用中嵌入HTML代码,根据嵌入HTM ... -
flex与java之间socket通信的教程5
2009-03-25 14:53 4108Flex和java的socket通信(五)聊天室的补充-在线列 ... -
flex与java之间socket通信的教程4
2009-03-25 14:50 3487(四)一个简单的聊天室目的:做一个简单的聊天室,用来实现消息广 ... -
flex与java之间socket通信的教程3
2009-03-25 14:48 2518三)多客户通信目的: ... -
flex与java之间socket通信的教程2
2009-03-25 14:44 2496二)单向通信目的:客 ...
相关推荐
"flex屏蔽系统右键菜单 & 自定义菜单"这个主题聚焦于如何禁用默认的系统右键菜单并创建自定义的右键菜单,以提供更个性化的用户体验。下面将详细介绍这个过程涉及的关键知识点。 1. Flex环境:Flex是Adobe开发的一...
总之,"Flex右键菜单例子"是一个针对Flex开发者的实用教程,它展示了如何在Flex应用,特别是使用OpenScales地图库的应用中,自定义右键菜单并屏蔽系统默认的右键行为。这个例子将帮助开发者提升用户体验,确保地图...
标题提到的"flex自定义右键菜单 完全屏蔽"是指在Flex应用程序中,不仅实现对默认右键菜单的完全屏蔽,还允许开发者根据自己的需求创建并应用自定义的右键菜单。这种方法避免了使用JavaScript进行跨域通信来实现屏蔽...
本例探讨了如何创建并屏蔽原有的Flex右键菜单,同时讲解了事件监听器的注册过程。Flex是一个用于构建富互联网应用程序(RIA)的框架,基于ActionScript和MXML语言,它提供了丰富的组件库,其中包括用于创建菜单的`...
完全屏蔽flex自带的右键菜单,实现自定义右键菜单,附件有完整可运行的例子。 这个问题折腾了一天多,在网上搜了很多资料,几乎都是一样的,转来转去,且讲的不明不白。这里我提供了可运行的全部代码,让你轻松搞定...
然而,有时为了保护内容不被轻易复制或出于安全考虑,开发者会寻求方法来屏蔽Flash对象的右键菜单。"网页中屏蔽flash右键 RightClick 0.70,超有效"这个项目就是为了解决这个问题而出现的,它是一个国外开源的解决...
本文将深入探讨如何在Flex环境中实现自定义的右键菜单,包括屏蔽浏览器的默认右键菜单,创建XML格式的多级菜单,以及设置菜单出现位置的自适应策略。 首先,我们需要了解Flex屏蔽浏览器系统右键的基本方法。在...
将该文件复制到flex工程的libs目录下。 用法详情请看博客。
本项目标题为"flex自制右键菜单",描述中提到作者从网上获取了相关代码并进行改写,实现了屏蔽Flex默认的右键菜单以及动态生成右键菜单的功能。下面我们将详细探讨Flex中如何实现这一目标。 首先,Flex是由Adobe...
在Flex开发中,右键菜单是用户交互的重要组成部分,它为用户提供了一种便捷的方式来访问上下文相关的操作。本文将深入探讨两种实现Flex自定义右键菜单的方法:系统右键菜单的扩展以及完全自定义的右键菜单。 1. **...
本篇文章将深入探讨如何在Flex应用中实现自定义的右键菜单,包括两种主要的方法:系统右键菜单的扩展和完全屏蔽系统菜单以创建自定义菜单。 首先,我们来看第一种方法——扩展系统右键菜单。在Flex中,我们可以利用...
`hideBuiltInItems()`方法用于屏蔽Flex内置的右键菜单,`addEventListener`则用于添加点击事件处理函数。`handleMenuItem1Click`和`handleMenuItem2Click`分别是处理这两个菜单项被点击时的逻辑。 在实际应用中,...
1. **Flex组件被遮挡**:由于Flex和HTML的渲染机制不同,当HTML内容被加载到IFrame中时,可能会覆盖Flex组件,导致菜单、弹出界面或右键菜单等不可见。解决这个问题的关键在于调整Z-index,即设置IFrame和Flex组件的...
这篇博文主要讨论的是如何在Flex应用中屏蔽右键菜单,这对于提供更整洁的用户体验和防止不必要的用户操作是非常有用的。 首先,让我们理解为什么要屏蔽右键菜单。在许多应用程序中,特别是那些具有高度交互性的Web...
标题提到的"Flash 11.2新功能,Flex屏蔽右击菜单"是指在使用Adobe Flash Player 11.2及Flex框架进行开发时,如何阻止用户通过鼠标右键点击在应用程序上弹出默认的上下文菜单,以及如何自定义自己的右键菜单。...
如远程对象的配置, flex 默认右键 菜单的屏蔽, datagrid 的渲染器, 编辑器。 tip 提示的重写。 Menu 的默认样式改写, 比如把分割线变细,flex 组件的生命周期,flex皮肤样式,动态图片的加载, 文件的上传于下载...
1. **屏蔽内置右键菜单**:首先,我们需要在HTML模板文件(如`Index.template.html`)中引入两个JavaScript文件,`swfobject.js`和`rightClick.js`,用于控制Flash对象的行为。确保文件路径和大小写正确,并在`...
实现主要功能如下 1. 多屏切换,这里主要是tileLayout布局的使用 ...3. 右键菜单和屏蔽系统的右键菜单 主要是这个属性 params.wmode="transparent"; 4. flex与JS的交互,(通过js向flex中传递视频播放地址)