Flash 弹出菜单后,点击舞台其他地方,关闭菜单功能的 实现方法: 实现原理:通过event 的事件阻止机制实现。以下为代码: /** * 单击按钮,弹出菜单 */ this.btn.addEventListener(MouseEvent.CLICK, showTypeList); private function showTypeList(e:MouseEvent):void { //弹出菜单 this.typeList = new TypeList(); this.typeList.y = -this.typeList.height - 5; this.addChild(this.typeList); //注意这里 需要终止事件的继续执行,避免弹出的菜单立即关闭 e.stopImmediatePropagation(); //对菜单的父容器加上单击监听 this.parent.addEventListener(MouseEvent.CLICK, onParentClick); } private function onParentClick(e:MouseEvent):void { //隐藏菜单 } /** * 单击TextField里面的文字,弹出菜单 */ this.chatUI.chatmsgTxt.addEventListener(TextEvent.LINK, textArea_link); private function textArea_link(event:TextEvent):void { //弹出菜单 //这个事件由于是TextEvent事件,所以在这里不能用e.stopImmediatePropagation();去终止,而应该加一个Click事件监听,然后再立即执行。 //同时对文本框加上Click监听 this.chatUI.chatmsgTxt.addEventListener(MouseEvent.CLICK, textArea_click);//监听文本框的单击事件,阻止事件派发。 } private function textArea_click(event:MouseEvent):void { this.chatUI.chatmsgTxt.removeEventListener(MouseEvent.CLICK, textArea_click); event.stopImmediatePropagation();//终止当前click事件,避免立即关闭弹出的按钮列表 }