Search code examples
actionscript-3flex4

I call Alert.Show in a function and want to get the result from there (Flex, ActionScript)


I'm using the Alert.show in a function and I want to get the user answer from there. So how can I achieve this. The problem is the function that call Alert.show will return a true or false value depend the user answer. but It seem that in Alert.show it only allow to pass in a CloseHandler for this. that is a new function. and since that I can get the user answer from where it is call to return the user answer.

Really thanks for help Yuan


Solution

  • Try this code

    <?xml version="1.0" encoding="utf-8"?>
    <!-- Simple example to demonstrate the Halo Alert control. -->
    <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">
    
        <fx:Script>
            <![CDATA[
                import mx.controls.Alert;
                import mx.events.CloseEvent;
    
                // Event handler function uses a static method to show
                // a pop-up window with the title, message, and requested buttons.
                private function clickHandler(evt:Event):void {
                    Alert.show("Do you want to save your changes?", "Save Changes", Alert.YES|Alert.NO, this, alertClickHandler);
                }
    
                // Event handler function for displaying the selected Alert button.
                private function alertClickHandler(evt:CloseEvent):void {
                    if (evt.detail == Alert.YES) {
                        status.text = "You answered Yes";
                    } else {
                        status.text = "You answered No";
                    }
                }
    
                // Event handler function changes the default Button labels and sets the
                // Button widths. If you later use an Alert with the default Buttons, 
                // you must reset these values.
                private function secondClickHandler(evt:Event):void {
                    Alert.buttonWidth = 100;
                    Alert.yesLabel = "Magenta";
                    Alert.noLabel = "Blue";
                    Alert.cancelLabel = "Green";
    
                    Alert.show("Select a color:", "Color Selection", Alert.YES|Alert.NO|Alert.CANCEL, this);
    
                    // Set the labels back to normal:
                    Alert.yesLabel = "Yes";
                    Alert.noLabel = "No";
                }
            ]]>
        </fx:Script>
    
        <s:Panel title="Halo Alert Control Example"
                width="75%"
                horizontalCenter="0" verticalCenter="0">
            <s:VGroup left="10" right="10" top="10" bottom="10">
                <s:Label color="blue"
                        text="Click the button below to display a simple Alert window."/>
                <s:Button label="Click Me" click="Alert.show('Hello World!', 'Message');"/>
    
                <mx:HRule width="100%" />
    
                <s:Label color="blue" 
                        text="Click the button below to display an Alert window and capture the button pressed by the user."/>
                <s:Button label="Click Me" click="clickHandler(event);"/>
                <s:Label id="status" fontWeight="bold"/>
    
                <mx:HRule width="100%" />
    
                <s:Label color="blue"
                        text="Click the button below to display an Alert window that uses custom Button labels."/>
                <s:Button label="Click Me" click="secondClickHandler(event);"/>
            </s:VGroup>
        </s:Panel>
    
    </s:Application>