Flex 屏幕锁定实现

本文的Flex屏幕锁定是指用户只需执行了窗口的某个操作(如单击按钮等)之后,锁住屏幕确保用户无法进行任何操作,直到当前操作完成。如下图所示即为本文的一个窗口。Flex 屏幕锁定实现_第1张图片

为什么需要锁屏:

       本身flex远程调用的组件如remoteobject就支持光标的showbusy属性设置功能,当其为true时,执行远程调用操作光标就会变成等待时钟,告知用户目前系统正在执行操作,请稍等。但是,纵然光标已变成等待时钟,用户仍可以单击其它按钮触发其它操作。实际业务中,有很多操作(比如大数据量查询)在当前操作没完成之时是不允许执行其它操作的。如图1所示,当用户执行了查询操作之后,即不可进行其它操作,除非当前查询已完成。这时flex提供的光标showbusy属性设置已不能满足我们的需求,为此需要屏幕锁定,如下图所示。

Flex 屏幕锁定实现_第2张图片

 

       当执行查询操作时,弹出操作提示信息框,然后窗口所有操作都不能进行,除非查询完成,弹出的操作提示信息框会消失,用户方可进行其它操作。

 

如何实现:

       实现原理很简单,执行查询操作之时即让其弹出一个有模式的弹出窗口,当操作完成之时将弹出窗口移除即可。如果追求UI效果的话,请处理弹出窗口的UI即可。

1)  在执行查询操作时弹出弹出对话框,下述为简单demo

// getAllUserResultcallrespondertestUserService对应为blazeds远程的一个服务

    getAllUserResult.token = testUserService.getAllUser();

    PopUpManager.addPopUp(window,this,true);

    window.width=180;

    window.height=60;

    window.title="系统忙,请稍等。。。";

PopUpManager.centerPopUp(window);

2)  callresponderresult事件和fault事件中移除弹出对话框

       protected function unlock():void{

           PopUpManager.removePopUp(window);

    }

3)  如此一个简单的屏幕锁定即实现,当然为了适应方便、和UI美观,建议将屏幕锁定封装成一个组件,加点动画等待效果。

 

 

你可能感兴趣的:(UI,function,Flex)