今天用了一小段时间实现了Flex自定义的右键菜单。
在Flex程序中,如果实现自定义的右键菜单,简单的通过ContextMenu类的操作是不行的。不能去掉Flash Player自带的三条信息。
通过参考网上的一些blog,最终找到了解决的方案,那就是屏蔽浏览器的鼠标右键,同时监听鼠标右键,当触发右键点击事件的时候,JavaScript调用Flex程序中的方法生成自定义的右键菜单。
首先添加JavaScript代码(可以修改Flex工程下html-template/index.template.html,防止编译的时候原来写的JavaScript代码全部被清空)
<script>
function onNsRightClick(e){
if(e.which == 3){
FlexTest.openRightClick();
e.stopPropagation();
}
stopDefault();
return false;
}
function onIeRightClick(e){
if(event.button > 1){
FlexTest.openRightClick();
//Flex.openRightClick();//这句话是为了出错让js不再往下执行,从而禁止flash中鼠标右键的现实,但是在状态栏中会报错;
parent.frames.location.replace('javascript: parent.falseframe');
e.stopPropagation(); //这句是关键
}
stopDefault();
return false;
}
//stopDefault方法是可以阻止浏览器的默认事件触发,试用了下,在IE6下能实现是阻止右键,但是在IE8下就不管事了。
function stopDefault( e ) {
if ( e && e.preventDefault ){
e.preventDefault();
}else{
window.event.returnValue = false;
}
return false;
}
if(navigator.appName == "Netscape"){
document.captureEvents(Event.MOUSEDOWN);
document.addEventListener("mousedown", onNsRightClick, true);
}else{
document.onmousedown=onIeRightClick;
}
</script>
Flex代码:
在<mx:Application>中添加createComplete="{init()}"
//注册一个回调函数
private function init():void{
ExternalInterface("openRightClick",showMenu);
}
//菜单位置
private function showMenu():void{
tempMenu.x = this.mouseX;
tempMenu.y = this.mouseY;
}
//菜单的布局
<mx:Canvas id="tempMenu" backgroundColor="0xFFFFFF">
...
</mx:Canvas>
另外还需要添加如下关键的配置
改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"
);
这样就能实现自定义右键菜单了。
分享到:
相关推荐
在Flex应用程序开发中,我们经常会遇到需要自定义用户交互行为的需求,比如禁止用户通过鼠标右键弹出默认的上下文菜单。这篇文档将详细介绍如何在Flex项目中实现这一功能,并提供相关的源码参考。 Flex是一种基于...
在网页开发中,有时我们可能需要对某些元素或者整个页面设置禁止鼠标右键操作,以防止用户通过右键菜单执行不希望出现的功能,比如复制、查看源代码等。标题"flex禁止鼠标右键"提示我们要关注的是在使用Flex布局的...
右键菜单则为用户提供了一种方便的交互方式,用户可以通过点击鼠标右键触发自定义的上下文菜单,执行特定的操作。本篇文章将深入探讨如何在Flex Tree组件中实现右键菜单。 首先,我们要了解Flex中的Event.MENU_SHOW...
要创建一个右键菜单,我们需要监听鼠标右键点击事件,然后动态显示或隐藏菜单。 1. **监听鼠标事件**: - 在Flex组件上,我们可以使用`addMouseListener`方法添加鼠标事件监听器。对于右键点击,我们关注的是`...
在Flex开发中,有时我们需要为用户界面添加自定义的右键菜单,以便提供更多的交互功能。本教程将指导你如何在Flex项目中实现这一功能,主要涉及以下知识点: 1. **右键菜单库的引入**: 首先,你需要下载一个名为`...
在Flex中,当用户在组件上点击鼠标右键时,通常会弹出默认的系统级右键菜单。为了屏蔽这个菜单,我们需要覆盖组件的`creationComplete`事件,然后监听`contextMenu`事件。在事件处理函数中,我们可以设置`event....
3. **处理鼠标事件**:为了让右键点击触发自定义菜单,我们需要监听鼠标右键点击事件。这通常在UIComponent或DisplayObject上完成。 ```actionscript component.addEventListener(MouseEvent.RIGHT_CLICK, ...
在Flex中创建右键菜单主要涉及两个关键组件:`ContextMenu`和`ContextMenuEvent`。`ContextMenu`是显示在鼠标右键点击时的菜单,而`ContextMenuEvent`是触发菜单显示的事件。 1. **创建ContextMenu对象** 要创建一...
在ActionScript中,我们可以监听`contextMenu`事件,当用户点击鼠标右键时,阻止默认的事件处理,从而实现屏蔽浏览器的系统菜单。以下是一个简单的示例: ```actionscript stage.addEventListener(ContextMenuEvent...
在Flex中,我们可以通过监听鼠标事件来控制右键菜单的行为。 1. **屏蔽Flex自带右键菜单**: Flex中的UIComponent类提供了默认的上下文菜单(即右键菜单),如果需要屏蔽这一功能,我们需要在相关组件上监听`...
总结一下,本篇文章主要介绍了如何在Flex中实现右键功能,并通过监听鼠标事件来实现在舞台上的动态绘图。这个过程涉及到了事件监听、自定义上下文菜单以及图形绘制等多个知识点。希望对理解Flex的应用开发有所帮助。
标题中的“支持火狐IE9的flex右键”指的是在Adobe Flex开发的Web应用程序中,实现对Firefox和Internet Explorer 9这两个浏览器的右键菜单功能的支持。Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网...
在Flex中,右键支持是用户交互的一个重要部分,它允许用户通过鼠标右键触发上下文菜单或自定义操作,提升用户体验。本文将深入探讨如何在Flex项目中实现右键支持,并结合提供的资源进行详细解析。 首先,我们需要...
关于“屏蔽菜单”,在Flex 3中,我们可以通过覆盖默认的鼠标右键事件来达到效果。在组件类中,我们可以监听`MouseEvent.RIGHT_CLICK`事件,并在事件处理函数中阻止事件的默认行为: ```actionscript myComponent....
在Flex中,右键菜单是一个常见的需求,可以增强用户体验,提供更多的操作选项。 在Flex中实现右键菜单通常有两种方式,一种是通过Flex内置的ContextMenuItem类,另一种是通过第三方库RightClickManager。原生的...
这通常涉及到监听鼠标右键点击事件,然后动态生成并显示菜单。 - 首先,你需要监听`MouseEvent.RIGHT_CLICK`事件。 ``` myComponent.addEventListener(MouseEvent.RIGHT_CLICK, onRightClick); function ...
在Flex编程中,右键菜单(Context Menu)是一种常见的用户交互功能,允许用户在点击鼠标右键时显示自定义的菜单选项。这个“flex右键菜单代码”分享提供了一个实现Flex中右键菜单的示例,这对于提升用户体验和增强...
这时,我们需要监听鼠标右键点击事件,并手动弹出自定义菜单。以下是一个简单的实现: ```actionscript myDisplayObject.addEventListener(ContextMenuEvent.MENU_SHOW, onContextMenuShow); function ...
这通常涉及到阻止浏览器的默认事件处理,可以通过在事件处理函数中调用`event.preventDefault()`来实现,但这需要对组件或舞台添加鼠标右键点击事件监听器: ```actionscript stage.addEventListener(MouseEvent....
本资源“纯CSS3实现鼠标右键显示网页功能菜单特效.zip”就是这样一个例子,它展示了如何仅用CSS3来创建一个在鼠标右键点击时显示的功能性网页菜单。 首先,我们要理解CSS3中的:hover伪类,它是实现鼠标悬停效果的...