0

Je développe une application AIR qui nécessite un menu à afficher uniquement lors de la première exécution. Dans ce cas, l'utilisateur sera en mesure de choisir la langue souhaitée pour l'application.AS3: Comment faire pour que la fonction parente retourne la valeur sélectionnée d'une ComboBox

J'affiche ce menu sans problème mais j'en ai besoin pour rester visible jusqu'à ce que la comboBox "select language" soit changée puis renvoie la valeur de données du choix sélectionné.

Mon problème est que je n'arrive pas à comprendre comment retourner une valeur seulement après que la zone de liste modifiable a été modifiée.

function promptFRMenu():String{ 
FRMenu.enabled = FRMenu.visible = true; //when I detect the app is running for the    
             // first time, the dialog box is enabled 
             // and made visible 
var peferedLng:String = new String; 

    FRMenu.language_CBox.addEventListener(Event.CHANGE, announceSelectedItem); 
     function announceSelectedItem(e:Event):void { 
       FRMenu.enabled = FRMenu.visible=false; 
       peferedLng = e.target.selectedItem.data; 
       -> return peferedLng; 
       //It is the 'parent' function that should return this value but 
       // only after it is selected 
     } 


} 

J'apprécierais vraiment toute aide. À la votre!

Répondre

0

vous ne pouvez pas retourner une fonction d'un gestionnaire d'événements. aussi une fonction ne peut pas retourner une fonction d'une fonction imbriquée comme ça. En outre, une fonction renvoie une valeur dès qu'elle est invoquée. Vous ne pouvez pas la différer tant qu'un événement n'a pas eu lieu. et juste un conseil, ce n'est généralement pas une bonne pratique d'imbriquer des fonctions nommées comme ça.

Je ne suis pas clair sur le résultat net que vous voulez atteindre, mais vous voulez probablement quelque chose plus proche de celle-ci:

var peferedLng:String = new String; 
function promptFRMenu():String{ 
    FRMenu.enabled = FRMenu.visible = true; 
} 
FRMenu.language_CBox.addEventListener(Event.CHANGE, announceSelectedItem); 
function announceSelectedItem(e:Event):void { 
    FRMenu.enabled = FRMenu.visible=false; 
    peferedLng = e.target.selectedItem.data; 
    // do whatever you want to do with peferedLng here 
} 
+0

qui est grat Big MOMO, merci. Ma logique était tout à fait fausse – Gerry

+0

NP - j'espère que vous l'obtenez fonctionne – momo

+0

Oui, ça fonctionne bien maintenant. Merci encore – Gerry

0

Cela fonctionne pour moi, je suis en utilisant FB Burrito w/SDK Hero

<?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:Script> 
     <![CDATA[ 
      private function _handleChange($event:Event) :void 
      { 
       trace($event.target + " // CHANGED // " + $event.target.selectedItem.value); 
      } 
     ]]> 
    </fx:Script> 

    <mx:ComboBox id="comboBox" rowCount="5" labelField="label" prompt="Select One" change="_handleChange(event);"> 
     <mx:dataProvider> 
      <s:ArrayList> 
       <fx:Object label="One" value="1" /> 
       <fx:Object label="Two" value="2" /> 
       <fx:Object label="Three" value="3" /> 
       <fx:Object label="Four" value="4" /> 
       <fx:Object label="Five" value="5" /> 
      </s:ArrayList> 
     </mx:dataProvider> 
    </mx:ComboBox> 

</s:Application> 
Questions connexes