http://www.cnblogs.com/wuhenke/archive/2010/01/29/1659353.html
通过ContextMenu hideBuiltInItems,如API所说,无法去除剪贴板选项。
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; } }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”,这对属性之后,将会对输入法造成很大的影响。
副作用:使用此种方法在Flex里屏蔽鼠标右键,导致的直接结果就是中文输入法不正常。
验证确实如此!!后续怎么解决还没有思路。
转载请注明: 出自 FlexHome 原文链接:http://flex.desizen.com/flex-custom-context-menu/
转载于:https://www.cnblogs.com/Null2051/archive/2012/10/03/2711106.html
相关资源:JAVA上百实例源码以及开源项目