1.如果你是Desktop Application
监听事件的MouseEvent.RIGHT_CLICK事件
比如对某个控件a进行监控右键点击事件
a.addEventListener(MouseEvent.RIGHT_CLICK,func);
鼠标的其他事件也可以监听,具体见http://livedocs.adobe.com/flex/3_cn/langref/flash/events/MouseEvent.html
2.如果是Web Appliction(麻烦了!)
其基本思路为:
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.
分享到:
相关推荐
3. 屏蔽系统右键菜单:要屏蔽系统右键菜单,我们可以在需要屏蔽的组件上添加一个事件监听器,捕获`contextMenuEvent`。然后在事件处理函数中,调用`event.preventDefault()`方法阻止默认的右键菜单显示。例如: ```...
完全屏蔽flex自带的右键菜单,实现自定义右键菜单,附件有完整可运行的例子。 这个问题折腾了一天多,在网上搜了很多资料,几乎都是一样的,转来转去,且讲的不明不白。这里我提供了可运行的全部代码,让你轻松搞定...
标题提到的"flex自定义右键菜单 完全屏蔽"是指在Flex应用程序中,不仅实现对默认右键菜单的完全屏蔽,还允许开发者根据自己的需求创建并应用自定义的右键菜单。这种方法避免了使用JavaScript进行跨域通信来实现屏蔽...
总之,在Flex中实现自定义右键菜单和多级右键菜单,主要涉及到ContextMenu类、MenuItem类以及事件监听器的使用。通过灵活组合这些元素,可以创建出满足不同需求的右键菜单系统,为用户提供更便捷的操作方式。
在Flex中,右键菜单是用户交互的重要组成部分,特别是在数据可视化和树形结构的数据展示中,如Flex Tree组件。本文将深入探讨如何在Flex中实现右键菜单,并结合提供的源码进行分析。 1. Flex右键菜单: Flex中的...
在Flex开发中,自定义右键菜单是一项常见的需求,它能为用户界面提供更丰富的交互体验。Flex是一款基于ActionScript 3.0的开源框架,主要用于构建富互联网应用程序(RIA)。在这里,我们将深入探讨如何在Flex中实现...
另外,需要注意的是,由于Flex默认不支持Tree组件的右键菜单,所以可能需要对Tree组件进行一些自定义设置,例如禁用默认的上下文菜单: ```actionscript tree.contextMenuEnabled = false; ``` 这可以防止系统级的...
总结来说,这个实例展示了如何在Flex中创建自定义的右键菜单,包括隐藏内置菜单项、添加自定义菜单项、绑定事件监听器以及响应用户操作。这是一项基础但重要的技能,对于提升Flex应用的用户体验有着重要作用。通过...
总的来说,Flex3 Tree右键菜单的实现涉及到对ContextMenu类、MenuItem类以及相关事件的理解和使用。通过自定义菜单项和事件处理,我们可以创建符合应用需求的交互式右键菜单,提高用户操作的便捷性。同时,灵活的...
这会阻止Flex默认的右键行为,并准备使用自定义菜单。通常,这会在应用程序创建完成的事件处理函数中进行,如`application1_creationCompleteHandler()`。 4. **监听右键点击事件**: 为需要添加右键菜单的组件...
// 阻止默认的右键菜单显示 contextMenu.show(event.target as InteractiveObject, event.localX, event.localY); } ``` 4. **定义事件处理函数**:当用户点击菜单项时,对应的事件处理函数会被调用。在这里,...
本文将深入探讨如何在Flex环境中实现自定义的右键菜单,包括屏蔽浏览器的默认右键菜单,创建XML格式的多级菜单,以及设置菜单出现位置的自适应策略。 首先,我们需要了解Flex屏蔽浏览器系统右键的基本方法。在...
本话题我们将探讨如何使用Flex技术来实现一个自定义的右键菜单。Flex是一种基于ActionScript 3.0的开放源码框架,主要用于构建富互联网应用程序(RIA)。 首先,我们需要理解Flex的基本架构。Flex使用MXML和...
Flex中的UIComponent类提供了默认的上下文菜单(即右键菜单),如果需要屏蔽这一功能,我们需要在相关组件上监听`contextMenu`事件,并阻止其默认行为。在ActionScript中,这可以通过以下代码实现: ```...
在Flex开发中,右键菜单...总结起来,创建和管理Flex中的右键菜单涉及`Menu`类的使用、数据结构的定义、事件监听器的注册以及可能的默认事件处理的阻止。通过灵活运用这些技术,开发者可以为用户提供更丰富的交互体验。
总之,"Flex右键菜单例子"是一个针对Flex开发者的实用教程,它展示了如何在Flex应用,特别是使用OpenScales地图库的应用中,自定义右键菜单并屏蔽系统默认的右键行为。这个例子将帮助开发者提升用户体验,确保地图...
本文将深入探讨两种实现Flex自定义右键菜单的方法:系统右键菜单的扩展以及完全自定义的右键菜单。 1. **系统右键菜单** 系统右键菜单是在Flex应用中利用ActionScript 3.0直接添加到UI组件上的菜单项。这种实现...
本篇文章将深入探讨如何在Flex应用中实现自定义的右键菜单,包括两种主要的方法:系统右键菜单的扩展和完全屏蔽系统菜单以创建自定义菜单。 首先,我们来看第一种方法——扩展系统右键菜单。在Flex中,我们可以利用...
关于“屏蔽菜单”,在Flex 3中,我们可以通过覆盖默认的鼠标右键事件来达到效果。在组件类中,我们可以监听`MouseEvent.RIGHT_CLICK`事件,并在事件处理函数中阻止事件的默认行为: ```actionscript myComponent....