PDA

Просмотр полной версии : ComboBox & function


fil.diesel
22.11.2009, 11:02
Ситуация следущая:
Есть ComboBox, при выборе объекта из масива нужно получить в зависимости от
выбора, срабатывание функции например: function1 или function2.
вот как это реализовать не могу сообразить...
код mxml...
<?xml version="1.0"?>
<!-- Simple example to demonstrate the ComboBox control. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundGradientColors="[0x000000,0x323232]" viewSourceURL="srcview/index.html">

<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;

[Bindable]
public var cards:ArrayCollection = new ArrayCollection(
[ {label:"function1", data:1},
{label:"function2", data:2} ]);

private function closeHandler(event:Event):void {
//...
}
private function function1():void {
//...
}

private function function2():void {
//...
}
]]>
</mx:Script>
<mx:ComboBox dataProvider="{cards}" width="150" color="0x000000"
close="closeHandler(event);"/>
</mx:Application>

Кип
22.11.2009, 18:14
Попробуйте так:

<?xml version="1.0"?>
<!-- Simple example to demonstrate the ComboBox control. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" backgroundGradientColors="[0x000000,0x323232]" viewSourceURL="srcview/index.html">

<mx:Script>
<![CDATA[
import mx.controls.ComboBox;
import mx.collections.ArrayCollection;

[Bindable]
public var cards:ArrayCollection = new ArrayCollection(
[ {label:function1, data:1},
{label:function2, data:2} ]);

private function closeHandler(event:Event):void {
//...

var cbox:ComboBox = event.target as ComboBox;
cbox.selectedItem.label();

}
private function function1():void {
label1.text = "function1";
}

private function function2():void {
label1.text = "function2";
}
]]>
</mx:Script>
<mx:ComboBox dataProvider="{cards}" width="150" color="0x000000"
close="closeHandler(event);"/>
<mx:Label id="label1" text=""/>
</mx:Application>

fil.diesel
22.11.2009, 18:34
Спасибо.
вот только как быть если нужно указать функцию, находящуюся
по след адресу???
ApplicationManager.Instance.function1
и
ApplicationManager.Instance.function2

Кип
22.11.2009, 18:43
Не уверен, но может быть вот так: ApplicationManager.Instance[cbox.selectedItem.label]

Или изменить dataProvider вот так:
{label:"function1", func:ApplicationManager.Instance.function1, Appdata:1}

тогда в closeHandler вызов функции изменится на cbox.selectedItem.func();