0

如何在突出显示/导航到另一个面板/页面之前询问用户确认?

我的屏幕上有几个面板。每个面板都有许多控件。我想用确定和取消按钮提示一个消息框(或警报),并在用户单击另一个面板时进行确认。

如果用户单击“确定”按钮,则导航到另一个面板/页面。如果用户单击“取消”按钮,则删除警报并将焦点移至同一面板。

目前我已经使用面板​​的 focus_out 事件(focusOutHandler(event:FocusEvent)) 实现了这一点。我单击另一个面板中的按钮,现在我收到警报,但是当我单击警报中的“确定”时,什么也没有发生(按钮单击是事件未触发)

提前致谢

4

2 回答 2

0

从它的声音中,您想根据单击警报上的哪个按钮做出反应?

如果是这种情况,请使用Alert 类中的内置关闭处理程序。

Alert 类有一个静态方法 show,具有以下签名:

public static function show(text:String = "", title:String = "", flags:uint = 0x4, parent:Sprite = null, closeHandler:Function = null, iconClass:Class = null, defaultButtonFlag:uint = 0x4, moduleFactory:IFlexModuleFactory = null):Alert

flags通过在参数中使用管道运算符添加两个标志

Alert.OK || Alert.CANCEL然后在closeHandler参数中添加关闭处理程序,您可以检查单击了哪个按钮并做出相应反应。

像这样的东西:

警报: Alert.show("Alert Title","Would you like to proceed?",Alert.OK || Alert.CANCEL,this,onClose)

关闭功能:

private function onClose(event:CloseEvent)
{
    if (eventObj.detail==Alert.OK) 
    {
      //proceed
    }
    else
    {
      //cancel operation
    }
}
于 2012-06-25T15:34:22.470 回答
0

根据您在此处对 James 帖子的评论,我正在发布示例,不确定您是否正在寻找相同的示例:-希望下面的代码可以给您一些想法。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>

    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.CloseEvent;

            private var storeNextFocusID:String = "first";
            private var storePreviousFocusID:String = "first";

            private function firstFocus():void
            {
                first.setFocus();   
                storePreviousFocusID = first.name;
            }

            private function showFirstTimeAlert(event:MouseEvent):void
            {
                if(event.currentTarget.name != storePreviousFocusID)
                {
                    Alert.show("Do you want to change Tab?","Alert",Alert.OK|Alert.CANCEL,null,closeHandler)
                    storeNextFocusID = event.currentTarget.name;
                }
            }

            private function closeHandler(event:CloseEvent):void
            {
                if(event.detail == Alert.OK)
                {
                    var focusCont:HGroup = mainContainer.getChildByName(storeNextFocusID) as HGroup;
                    focusCont.setFocus();
                    storePreviousFocusID = storeNextFocusID;
                } else
                {

                } 
            }
        ]]>
    </fx:Script>
    <s:VGroup id="mainContainer" x="50" y="50" width="400" height="300" creationComplete="firstFocus()">
        <s:HGroup  id="first" name="first" width="100%" height="100%" click="showFirstTimeAlert(event)">
            <mx:TabNavigator  width="100%" height="100%">
                <mx:VBox label="left">
                    <mx:Label text="labelPlacement = 'left'" />
                </mx:VBox>
                <mx:VBox label="right">
                    <mx:Label text="labelPlacement = 'right'" />
                </mx:VBox>
            </mx:TabNavigator>
            <s:Panel  width="100%" height="100%">
            </s:Panel>
        </s:HGroup>

        <s:HGroup  id="second" name="second" width="100%" height="100%"  click="showFirstTimeAlert(event)">
            <mx:TabNavigator width="100%" height="100%">
                <mx:VBox label="top">
                    <mx:Label text="labelPlacement = 'top'" />
                </mx:VBox>
                <mx:VBox label="bottom">
                    <mx:Label text="labelPlacement = 'bottom'" />
                </mx:VBox>
            </mx:TabNavigator>
            <s:Panel  width="100%" height="100%">
            </s:Panel>
        </s:HGroup>

    </s:VGroup>

</s:Application>
于 2012-06-26T08:46:14.580 回答