我正在开发一个AIR应用程序,它需要一个菜单才能在第一次运行时显示。在其中,用户将能够选择要运行的应用程序所需的语言。
我正在显示此菜单没有问题,但我需要它保持可见,直到更改“选择语言”组合框,然后返回所选选项的数据值。
我的问题是,我似乎无法弄清楚如何在组合框更改后返回值。
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 :(得分:0)
这对我有用,我正在使用带有Hero SDK的FB Burrito
<?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>
答案 1 :(得分: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
}