Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как назначить диспечиризвцию 3-ох обектов в одном классе??? (http://www.flasher.ru/forum/showthread.php?t=136691)

Killer_13 23.02.2010 18:00

как назначить диспечиризвцию 3-ох обектов в одном классе???
 
Есть три комбобокса в одном классе, нужно назначить диспечиризацию каждому из них и потом вызывать в другом классе
Вот так с одним комбобоксом работает

Код AS3:

public var cb_spieler:ComboBox = new ComboBox();
public var cb_einsatz:ComboBox = new ComboBox();
public var cb_startkapital:ComboBox = new ComboBox();
 
 
 
cb_spieler.addEventListener(Event.CHANGE, Change);
 
 
 
private function Change(event:Event){
 
        dispatchEvent(new Event("Change_comBox1"));
 
}
 
 
public function get selectedLabel():String{
 
        return cb_spieler.selectedLabel;
 
}

С тремя комбобоксми пробую делать вот так..

Код AS3:

//--------------------------------------------------------------------------------
 
                private function Change(event:Event){
 
                        switch (event.target) {
 
                                          case cb_spieler: {
                                                dispatchEvent(new Event("Change_comBox1"));
                                        } break;
 
                                          case cb_einsatz: {
                                                dispatchEvent(new Event("Change_comBox2"));
                                        } break;
 
                                          case cb_startkapital: {
                                                dispatchEvent(new Event("Change_comBox3"));
                                        } break;
                                }
                }
 
//--------------------------------------------------------------------------------
 
                public function get selectedLabel():String{
 
                        switch (this.target) {
 
                                          case cb_spieler: {
                                                return cb_spieler.selectedLabel;
                                        } break;
 
                                          case cb_einsatz: {
                                                return cb_einsatz.selectedLabel;
                                        } break;
 
                                          case cb_startkapital: {
                                                return cb_startkapital.selectedLabel;
                                        } break;
                        }
                }
 
//-------------------------------------------------------------------------------

Че т не очень хочет.. ругается на return в switch и я незнаю как в switch принять текущий обект.

Всем спасибо за ответы..

dixus 23.02.2010 19:32

Цитата:

Сообщение от Killer_13 (Сообщение 888671)
ругается на return в switch

Ваша функция ничего не возвратит, если ни один case в switch'e не сработает, потому и ругается

ЗЫ: Что мешает чделать так:

Код AS3:

return this.target.selectedLabel;

?

Killer_13 23.02.2010 19:37

Так что мне еще default прописать?

А ход правильный...? Я на счет вопроса, что в названии темы..

Добавлено через 13 минут
Дело в том, что я никак не могу врубиться как работают set и get, функция

Код AS3:

public function get selectedLabel():String{

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

dixus 23.02.2010 22:01

Цитата:

Сообщение от Killer_13 (Сообщение 888702)
Дело в том, что я никак не могу врубиться как работают set и get, функция

Код AS3:

public function get selectedLabel():String{

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

Собственно, что должно возвращать selectedLabel? Лейбл последнего измененного комбобокса? Если да - то надо сохранять информацию о том, к какому комбобоксу обращались последний раз.

Killer_13 23.02.2010 22:07

Нужно сделать, чтоб возвращало, лейблы всех трех комбобоксов...

Код AS3:

private function Change(e:Event){
selectedBox = ComboBox(e.target);
dispatchEvent(new Event("Change_comBox1"));
trace("1>"+selectedBox);
}
//
public function get selectedLabel():String{
 
trace("2>"+selectedBox);
trace("3>"+selectedBox.selectedLabel);
return selectedBox.selectedLabel;
}

вот так, если выбирать значения комбобоксов, работает, а если их не трогать, то исть CHANGE не срабатывает и соответственно все косбобоксы null...

dixus 23.02.2010 22:11

Цитата:

Сообщение от Killer_13 (Сообщение 888737)
Нужно сделать, чтоб возвращало, лейблы всех трех комбобоксов...

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

Цитата:

Сообщение от Killer_13 (Сообщение 888737)
вот так, если выбирать значения комбобоксов, работает, а если их не трогать, то исть CHANGE не срабатывает и соответственно все косбобоксы null...

Почему бы не инициировать selectedBox изначально? Если возвращать что-то надо только когда юзер что-то выбирал в комбобоксах - заведите соответствующий флажок.

Killer_13 23.02.2010 22:15

Цитата:

Почему бы не инициировать selectedBox изначально?
Присваиваю
Код AS3:

private var selectedBox:ComboBox=cb_spieler;

В таком случае, этот комбобокс, имеет значение, то что нужно, а остальные null

dixus 23.02.2010 22:19

Цитата:

Сообщение от Killer_13 (Сообщение 888742)
В таком случае, этот комбобокс, имеет значение, то что нужно, а остальные null

Не понял. selectedBox у вас один, и он ссылается на cb_spieler. cb_einsatz и cb_startkapital у вас инициализированы изначально. Что тогда null?

Killer_13 23.02.2010 22:25

Да, верно, но если собитие Change не происходит, тоисть пользователь, не выбирает никаких значений, а остаются значения те, которые заданы по умолчанию...
Соответственно в selectedBox отсылает null,
Если так тоже непонятно, могу выставить код, там немного..

dixus 23.02.2010 22:35

Ну вообще это вполне логично =) Либо в коде, использующем ваш selectedLabel, учитывайте такую возможность, либо изначально проставьте выбранные значения для комбобоксов.


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

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