0

Я разрабатываю приложение AIR, которое требует, чтобы меню отображалось только во время первого запуска. В этом случае пользователь сможет выбрать нужный язык для приложения.AS3: Как заставить родительскую функцию вернуть выбранное значение ComboBox

Я показываю это меню без проблем, но мне нужно, чтобы он оставался видимым до тех пор, пока не будет изменен comboBox «select language», а затем верните значение данных выбранного выбора.

Моя проблема заключается в том, что я не могу понять, как вернуть значение только после изменения поля со списком.

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 
     } 


} 

Я бы очень признателен за любую помощь. Приветствия!

ответ

0

вы не можете вернуть функцию из обработчика событий. также функция не может вернуть функцию из вложенной функции, подобной этой. далее функция возвращает значение, как только оно вызывается - вы не можете отложить его до возникновения события. и просто совет, обычно это нехорошая практика, чтобы встраивать названные функции.

я не ясно на чистый результат вы хотите достичь, но вы, вероятно, хотите что-то ближе к этому:

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

Это GRAT Большой МОМО, спасибо. Моя логика была ошибочной – Gerry 2010-12-03 15:18:49

0

Это работает для меня, я использую FB буррито ж/Hero SDK

<?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>