加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex屏蔽右键

发布时间:2020-12-15 05:09:01 所属栏目:百科 来源:网络整理
导读:???????????? Flex 自带的ContextMenu和ContexMenuItem可以实现对右键菜单的控制,具体使用可以看API。用ContextMenu.hideBuiltInItems()可以隐藏部分菜单,当时对“设置”等系统菜单屏蔽不了。 ???????????? 要完全屏蔽右键菜单,让人犯难。 ? ?????“山重

???????????? Flex 自带的ContextMenu和ContexMenuItem可以实现对右键菜单的控制,具体使用可以看API。用ContextMenu.hideBuiltInItems()可以隐藏部分菜单,当时对“设置”等系统菜单屏蔽不了。

???????????? 要完全屏蔽右键菜单,让人犯难。?
?????“山重水复疑无路,?柳暗花明又一村。

???????????? Flex中的事件流默认捕获过程为false,而js的事件流默认的是true。(详见js、Flex的事件机制)

??????????? 它提供了一种思路:IE,在右键事件的捕获过程,让事件停止传播,Flex对象接受不了右键事件,右键菜单自然就没有了;也许有人会问:没有右键事件,怎么添加我们自己的右键响应时间呢?

????????? 嘿嘿,ExternalInterface.addCallback("js函数",Flex 函数),在IE中捕获到右键事件的时候事件监听器调用Flex的函数。具体的步骤大致如下:

???????? 1.在IE中定义捕获右键事件,定义事件监听器,阻止事件的传播,调用Flex 函数,模拟响应右键事件

??????????? document..onmousedown=onIeRightClick;

??????????? function onIeRightClick()

????????????? {

?????????????????????? if(event.button >1)//右键是2,左键是1

???????????????????????? {

??????????????????????????????????${application}.openRightClick();//调用Flex函数
????????????????????????????????? e.stopPropagation();?? //阻止事件传播

???????????????????????? }

???????????? }

???????? 2.在Flex 中定义外部调用方法

????????????? private function openRightClick():void
???????????? ??{

????????????????????//自己构造一个事件对象
?????????????????????var e:MouseEvent = new MouseEvent(MouseEvent.MOUSE_DOWN,true,false,mouseTarget.mouseX,mouseTarget.mouseY);?
???????????????????? //派发事件

??????????????????????mouseTarget.dispatchEvent(e);
??????????????? }

?????????? 3.在Flex application初始化时注册外部调用方法:如creationComplete="init()"

?????????????? private function init():void

??????????????? {

????????????????? ExternalInterface.addCallback("openRightClick",openRightClick);//注册可以调用

????????????????}

??????????? 4.2中模拟一个事件对象需要一个事件源

????????????????? 在需要屏蔽的组件上定义mouSEOver(也可以其他的事件)事件监听器getMouseTarget(event)

??????????????? private function getMouseTarget(event:MouseEvent):void
????????????????? ?{
???????????????????????? ??mouseTarget = DisplayObject(event.target); //获取到事件源
????????????????? ??}

?

???????????? 5.定义mouseDown事件监听器showMouseEvent(event)

????????????? private function showMouseEvent(event:MouseEvent) : void
?????????????? ?{
??????????????????? ?if(event.buttonDown == true)
??????????????????????????? ?Alert.show("您按下的鼠标左键");
???????????????? ??else
??????????????????????? ??Alert.show("您按下的是鼠标右键");//在这里构造自己的右键菜单,event对象就是上面派发下来的
???}

???????? 5.别忘记了还一步,把swf的参数wmode="opaque"或"transpare",默认是window,这个参数我的理解是它的事件依赖于IE,如果是Window的话,事件产生就来自于操作系统(个人讲解)

??????? ok,全部工作完成了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读