今天用了一小段时间实现了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 自定义右键菜单 多级右键菜单
实现右键点击事件,及完全屏闭系统右键菜单 并自定义右键菜单
flex3 Tree右键菜单, 前一个是flex4的, 这个滚动条好用
Flex自定义右键菜单
Flex添加右键菜单,只是文档,里边有描述性的代码
flex右键菜单完全屏蔽右键 可以自定义;导入后可以直接应用;绝对值; 非js屏蔽
Flex右键菜单 flex tree 右键菜单 导入eclipse可直接用。我使用的flex sdk 版本是flex4.5.1,更改为4.0可直接使用。
对初学者有用,一个简单的flex 自定义右键菜单
完全屏蔽flex自带的右键菜单,实现自定义右键菜单,附件有完整可运行的例子。 这个问题折腾了一天多,在网上搜了很多资料,几乎都是一样的,转来转去,且讲的不明不白。这里我提供了可运行的全部代码,让你轻松搞定...
从网上下载了一些代码,经过自己的改写,可以屏蔽flex自带右键,flex动态生成右键等功能
flex添加右键菜单实例。很经典的实例。
Flex屏蔽浏览器系统右键,实现自定义Menu的右键菜单,支持XML格式的多级菜单,以及支持菜单出现位置的自适应。欢迎大家修改,(能给出如何恢复浏览器右键菜单最好)。
flex 自定义右键菜单
NULL 博文链接:https://mirabelle1211.iteye.com/blog/961255
flex 控制鼠标移动的例子
flex实现右键功能 点击右键会不断地画出小圆点 供大家分享
flex 右键菜单两种实现: 1.系统右键菜单,系统右键菜单项中添加菜单项 2.屏蔽系统右键菜单,自定义右键菜单