Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   ComboBox и Alert (http://www.flasher.ru/forum/showthread.php?t=91309)

JaLav 30.01.2007 14:18

А как в код залезть? В МХ при добавлении компонента на панель Library добавляется папка Flash UI Components,
а в 8-м - нет. Flash8/en/configuration/сomponents те, что с разширением .swc?
В чем их надо открывать?

Nirth 30.01.2007 14:24

классы компонентов лежат в
Flash 8/en/Configuration/Classes/mx

ComboBox соответсвенно в

Flash 8/en/Configuration/Classes/mx/controls/ComboBox.as

для более полной картины скажу что ComboBox наследует ComboBase, тот UIComponent а тот UIObject. и активно использует mx.controls.List.

JaLav 30.01.2007 14:32

Спасибочки.

JaLav 30.01.2007 16:06

Снова вопрос.
Если все это (рабочий пример Nirth-а)поставить в обработчик для кнопки
Код:

but.onRelease=function()
{
import mx.controls.Alert;
import mx.controls.ComboBox;
_global.leng=new Array();
var interval:Number;

onComboBoxChange=function(event:Object):Void
{
        var target:ComboBox = ComboBox(event.target);
        var ob=event.target.selectedItem.data;
        leng[j]=ob;
        trace(ob);
        if(!Number(target.selectedItem.data))
        {
                comboBox.removeAll();
                interval = setInterval(showWarning, 1);
        }
}

function showWarning():Void
{
        Alert.show("Data is not big enough", "Warning");
        clearInterval(interval);
}
comboBox.addItem({label:"Hello", data:0});
comboBox.addItem({label:"World", data:1});
comboBox.addEventListener("change", onComboBoxChange);
}

при первом щелчке - все нормально, при втором данные выводятся дважды и т.д.
В том примере, который я писала вначале тоже была та же проблема.
Я поставила строчку
Код:

var cbListener:Object = new Object();
перед обработчиком кнопки.
А с примером, Nirth-а так не получается.
:)

Nirth 30.01.2007 16:15

Я не понял ничего.

вообще зачем вставлять код в кнопку?...

Nirth 30.01.2007 16:15

Вообще мой код, это Workaround к именно этому багу именно у ComboBox, кнопким такое делать не нужно.

JaLav 30.01.2007 16:33

Просто у меня есть меню, динамическое. В зависимости от нажатого пункта меню в comboBox загружаются разные данные.
Пример с кнопкой - это для простоты.

Nirth 30.01.2007 16:59

нечто вроде этого?

Код:

import mx.controls.Alert;
import mx.controls.Button;
import mx.controls.ComboBox;

var dp1:Array = [{label:"First Hello", data:0},
                                {label:"First Bye", data:1}];
var dp2:Array = [{label:"Second Hello", data:0},
                                {label:"Second Bye", data:1}];
var dp3:Array = [{label:"Third Hello", data:0},
                                {label:"Third Bye", data:1}];
var dataProviders:Array = new Array(dp1, dp2, dp3);

var comboBox:ComboBox;

function onButtonClick(event:Object):Void
{
        var button:Button = Button(event.target);
        comboBox.dataProvider = dataProviders[button.getDepth()-1];       
}

function onComboChange(event:Object):Void
{
        var cb:ComboBox = ComboBox(event.target);
       
        if(!Boolean(cb.selectedItem.data))
        {
                setTimeout(Alert.show, 1,
                                  "Data is not big enough", "Warning", Alert.OK);
        }
}       

function createApplication():Void
{
        for(var i:Number = 1; i <= dataProviders.length; i++)
        {
                var btn:Button = createClassObject(mx.controls.Button,
                                                                                  String("btn"+i), i);
                        btn.move(0, (i-1)*btn.height);
                        btn.label = String("Button "+i);
                       
                        btn.addEventListener("click", onButtonClick);
        }
       
        comboBox = createClassObject(ComboBox, "comboBox", getNextHighestDepth());
        comboBox.move(200, 0);
        comboBox.addEventListener("change", onComboChange);
}

createApplication();


CorC 30.01.2007 17:04

а вы не пробовали после нажатия на кнопку очищать комбо?
или перед запонлением его?
а не после выбора компонента

JaLav 30.01.2007 17:15

Вложений: 1
Вроде этого. И когда выбираешь первый пункт списка, должно появляться предупреждение.


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

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