显示用户无法关闭的提醒,事件自动关闭

时间:2012-08-01 15:30:02

标签: flex actionscript

我有一个Flex应用程序,当用户单击按钮时,它会向数据库发送查询。由于查询可能很重,并且可能需要一分钟,因此我想显示一个警报,该警报仅在事件从数据库返回后关闭(用户将无法自行关闭)。 Flex中有可能吗?我该怎么做?

我有sendQuery()和dataEventHandler()函数。我想我需要将代码放在sendQuery()中以显示警报,并在dataEventHandler()中将数据放入数据库后关闭它,但如何让警报“取消隐藏”?

4 个答案:

答案 0 :(得分:1)

内置的Flex Alert类将始终具有某种类型的关闭按钮。

但是,没有理由不能创建自己的组件;然后使用PopUpManager打开和关闭它。

答案 1 :(得分:0)

制作一个0-0.2 alpha形状,覆盖整个应用程序(可能你会想要监听resizeevents),并在消息中间添加一个自定义面板。

答案 2 :(得分:0)

根据想法,您可以创建自定义提醒:

  1. 显示提醒
  2. 停用应用程序。
  3. 隐藏提醒。
  4. 启用应用程序。
  5. 警示示例:

    <?xml version="1.0" encoding="utf-8"?>
    <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
             xmlns:s="library://ns.adobe.com/flex/spark" 
             xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300"
             creationComplete="onCreationComplete(event)">
    
        <s:Rect>
            <s:fill>
                <s:SolidColor color="0xFFFFFF"/>
            </s:fill>
            <s:stroke>
                <s:SolidColorStroke />
            </s:stroke>
        </s:Rect>
    
        <s:Label text="Please Wait..."/>
    
        <fx:Script>
            <![CDATA[
                import mx.core.FlexGlobals;
                import mx.events.FlexEvent;
                import mx.managers.PopUpManager;
                public static function show():void
                {
                    PopUpManager.createPopUp(FlexGlobals.topLevelApplication);      
                }
    
                public static function hide():void
                {
                    PopUpManager.removePopUp(this);
                    FlexGlobals.topLevelApplication.enabled = true;
                }
    
                protected function onCreationComplete(event:FlexEvent):void
                {
                    PopUpManager.centerPopUp(this);
                    FlexGlobals.topLevelApplication.enabled = false;
                }
            ]]>
        </fx:Script>
    </s:Group>
    

    用法:

    YourAlert.show();
    
    YourAlert.hide();
    

答案 3 :(得分:0)

@Alex,我使用了你的代码但稍微修改了一下,因为有一些错误:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx"
         creationComplete="creationCompleteHandler()" width="100%" height="100%">
    <fx:Script>
        <![CDATA[

            import mx.core.FlexGlobals;
            import mx.core.UIComponent;
            import mx.managers.PopUpManager;

            ///////////////////////////////////////
            //// public functions - my group is ImageViewer.mxml component


            public static function show():ImageViewer {
                return PopUpManager.createPopUp(FlexGlobals.topLevelApplication as DisplayObject, ImageViewer) as ImageViewer;
            }

            public function hide():void {
                PopUpManager.removePopUp(this);
                FlexGlobals.topLevelApplication.enabled = true;
            }


            ////////////////////////////
            //// component events

            private function creationCompleteHandler():void {
                PopUpManager.centerPopUp(this);
                FlexGlobals.topLevelApplication.enabled = false;
            }
            ]]>
    </fx:Script>
</s:Group>

并称之为:

var imageviewer:ImageViewer = ImageViewer.show();
//imageviewer.imageURL = _value_dto.value;