Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   ComboBox & function (http://www.flasher.ru/forum/showthread.php?t=132874)

fil.diesel 22.11.2009 11:02

ComboBox & function
 
Ситуация следущая:
Есть ComboBox, при выборе объекта из масива нужно получить в зависимости от
выбора, срабатывание функции например: function1 или function2.
вот как это реализовать не могу сообразить...
код mxml...
Код AS3:

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

Попробуйте так:
Код AS3:

<?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();


Часовой пояс GMT +4, время: 13:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.