2010-11-14 1 views
0

J'utilise le Alert.show dans une fonction et je veux obtenir la réponse de l'utilisateur à partir de là. Alors, comment puis-je y parvenir. Le problème est la fonction que l'appel Alert.show retournera une valeur vraie ou fausse dépend de la réponse de l'utilisateur. mais il semble que dans Alert.show, il permet seulement de passer dans un CloseHandler pour cela. c'est une nouvelle fonction. et depuis que je peux obtenir l'utilisateur répond d'où il est appelé pour retourner la réponse de l'utilisateur.J'appelle Alert.Show dans une fonction et je veux obtenir le résultat à partir de là (Flex, ActionScript)

Vraiment merci pour l'aide Yuan

Répondre

1

Essayez ce 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> 
1

Vous pouvez le faire. voici comment:

private function deleteItem_Confirmation_Handler(event:CloseEvent):void 
    { 
     if(event.detail == Alert.OK) 
     { 
      //Your code here 
     } 
    } 

    public function deleteValue():void 
    { 
     Alert.show("Are you sure you want to delete this item?", "confimation", Alert.OK | Alert.CANCEL, null, deleteItem_Confirmation_Handler, null, Alert.OK); 
    } 
+0

Merci, mais dans ce code, je ne peux pas obtenir la réponse de l'utilisateur pour revenir à la fonction qui appelle deleteValue(). Il semble que Alert.show() ne peut pas obtenir la réponse de l'utilisateur d'où est-il appel http://flexed.wordpress.com/2006/08/04/alertshow-behavour-in-flex/ –

+0

@Yuan, vous pouvez passer un fonction anonyme à l'appel Alert.show comme dans l'événement écouteurs regarder exemple ici: http://www.kensodev.com/2009/07/14/add-a-parameter-or-even-more-then-one-to -flex-event-listener/cet écouteur d'événement affiché mais Alert.show est identique. Gardez à l'esprit, ce n'est pas la meilleure pratique du tout – KensoDev

0

changement

evt.detail == Alert.YES 

à

evt.detail == 1 

le bouton oui renvoie une valeur int de 1, le pas de bouton renverrait une valeur int de 2

Questions connexes