我有一个Popup
皮肤TitleWindow
我用作弹出窗口,但它背后的项目是接收鼠标点击事件。是否有一个选项可以阻止鼠标事件发生在窗口的主要内容组后面?
编辑:澄清 - 我不是在问如何制作窗口模态。弹出窗口后面的项目 - 不是在主窗体上而是在侧面,但在后面和隐藏 - 当用户单击contentGroup
外观部件的区域时接收鼠标事件。如果用户点击该组中的项目,则不会发生这种情况,但轻微错过可能会触发意外的背景按钮。
答案 0 :(得分:2)
创建弹出式集modal=true
时。类似的东西:
var pop:MyPopUpClass = PopUpManager.createPopUp(parent, MyPopUpClass, true) as MyPopUpClass;
答案 1 :(得分:1)
您需要将弹出窗口设为模态窗口。当你做一些模态时,这意味着窗口(Alert,popup,titleWindow等)将保持在顶部,屏幕的其余部分将冻结,直到顶部窗口关闭。
“PopUpManager还提供模态,因此弹出窗口下方的窗口无法接收鼠标事件,并且如果用户在窗口外单击鼠标也会提供事件,以便开发人员可以选择关闭窗口或警告用户。”
模态的默认值为false
。您可以在true
或addPopup
createPopup
来将其设置为true
public static function addPopUp(window:IFlexDisplayObject, parent:DisplayObject, modal:Boolean = false, childList:String = null):void
public static function createPopUp(parent:DisplayObject, className:Classe, modal:Boolean = false, childList:String = null):IFlexDisplayObject
答案 2 :(得分:1)
我通过替换它来解决这个问题:
<s:SparkSkin ...>
<s:Rect height="{hostComponent.height}" radiusX="10" width="{hostComponent.width}">
<s:fill>
<s:SolidColor color="#F5F4EB"/>
</s:fill>
</s:Rect>
<!-- header, move area, close button and other details -->
<s:Group id="contentGroup"
top="40"
left="10"
right="10"
bottom="10">
</s:Group>
</s:SparkSkin>
有了这个:
<s:SparkSkin ...>
<s:Rect height="{hostComponent.height}" radiusX="10" width="{hostComponent.width}">
<s:fill>
<s:SolidColor color="#F5F4EB"/>
</s:fill>
</s:Rect>
<!-- header, move area, close button and other details -->
<s:Group top="40"
left="10"
right="10"
bottom="10">
<s:Rect top="0"
left="0"
right="0"
bottom="0">
<s:fill>
<s:SolidColor color="0xF5F4EB" />
</s:fill>
</s:Rect>
<s:Group id="contentGroup"
top="0"
left="0"
right="0"
bottom="0">
</s:Group>
</s:Group>
</s:SparkSkin>
在组后面创建一个矩形对象,使其正常接受点击事件。
答案 3 :(得分:0)
如果您不是在寻找modal
答案,那么我建议的是在打开弹出窗口时删除所有相关的侦听器,并在弹出窗口被删除时将其添加回来。
x.removeEventListener(MouseEvent.CLICK...
PopUpManager.addPopup(...
onClose(...
x.addEventListener(MouseEvent.CLICK...
答案 4 :(得分:0)
尝试使用opaqueBackground属性。