PDA

Просмотр полной версии : как назначить диспечиризвцию 3-ох обектов в одном классе???


Killer_13
23.02.2010, 18:00
Есть три комбобокса в одном классе, нужно назначить диспечиризацию каждому из них и потом вызывать в другом классе
Вот так с одним комбобоксом работает


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;

}


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

//--------------------------------------------------------------------------------

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
ругается на return в switch
Ваша функция ничего не возвратит, если ни один case в switch'e не сработает, потому и ругается

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

return this.target.selectedLabel;?

Killer_13
23.02.2010, 19:37
Так что мне еще default прописать?

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

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

public function get selectedLabel():String{


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

dixus
23.02.2010, 22:01
Дело в том, что я никак не могу врубиться как работают set и get, функция

public function get selectedLabel():String{


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

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

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
Нужно сделать, чтоб возвращало, лейблы всех трех комбобоксов...
в таком случае стоит их возвращать массивом/упаковать в одну строку, а еще лучше - по возможности сделать по отдельному аксессору на каждый комбобокс.

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

Killer_13
23.02.2010, 22:15
Почему бы не инициировать selectedBox изначально?
Присваиваю
private var selectedBox:ComboBox=cb_spieler;
В таком случае, этот комбобокс, имеет значение, то что нужно, а остальные null

dixus
23.02.2010, 22:19
В таком случае, этот комбобокс, имеет значение, то что нужно, а остальные 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, учитывайте такую возможность, либо изначально проставьте выбранные значения для комбобоксов.

Killer_13
23.02.2010, 22:39
Ну, да, я это понимаю, но все же хочу как то решить эту задачу.. :(