如何防止弹出标题窗口后面的项目接收鼠标事件?

时间:2011-08-16 21:24:37

标签: flex flex-spark

我有一个Popup皮肤TitleWindow我用作弹出窗口,但它背后的项目是接收鼠标点击事件。是否有一个选项可以阻止鼠标事件发生在窗口的主要内容组后面?

编辑:澄清 - 我不是在问如何制作窗口模态。弹出窗口后面的项目 - 不是在主窗体上而是在侧面,但在后面和隐藏 - 当用户单击contentGroup外观部件的区域时接收鼠标事件。如果用户点击该组中的项目,则不会发生这种情况,但轻微错过可能会触发意外的背景按钮。

5 个答案:

答案 0 :(得分:2)

创建弹出式集modal=true时。类似的东西:

var pop:MyPopUpClass = PopUpManager.createPopUp(parent, MyPopUpClass, true) as MyPopUpClass;

答案 1 :(得分:1)

您需要将弹出窗口设为模态窗口。当你做一些模态时,这意味着窗口(Alert,popup,titleWindow等)将保持在顶部,屏幕的其余部分将冻结,直到顶部窗口关闭。

“PopUpManager还提供模态,因此弹出窗口下方的窗口无法接收鼠标事件,并且如果用户在窗口外单击鼠标也会提供事件,以便开发人员可以选择关闭窗口或警告用户。”

模态的默认值为false。您可以在trueaddPopup

的同时设置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属性。