Форум 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 (http://www.flasher.ru/forum/showthread.php?t=112413)

джонатан 27.05.2008 07:18

Не могу разобраться с компонентом ComboBox
 
Здравствуйте! Одна надежда на Вас осталась! Целую ночь брожу по гуглу и никак ничего немогу найти. :wacko:
Поставил значит я компонент ComboBox, дал ему имя "combo_pogoda" открыл закладку "parameters" начал думать...:umnik2: Вобщем ввел в Value 10 пунктов. В итоге получилось следующее:

data: []
editable: false
lables: [Страна1, Страна2, Страна3, Страна4, Страна5, Страна6, Страна7, Страна8, Страна9, Страна10]
rowCount: 10 (Сразу флеш поставил сам 5 почемуто, я поменял на 10)

А что дальше? Как мне написать, чтобы если юзер выбрал к примеру "Страну1", что-бы сразу произошло:
Код:

_root.countries.gotoAndStop(2);
Помогите пожалуйста мне глупому! А-то я уже прям незнаю что делать.

Заранее благодарю всех откликнувшихся.

alexcon314 27.05.2008 09:15

Откройте обычный хэлп флэша и почитайте про обработчик события change компонента комбобокс.
F1->Component Language Reference->ComboBox component->ComboBox.change

джонатан 27.05.2008 19:04

Хм... Почитал, но всеравно мало, что понял. Понял только следующее:

-Програмно добавляем пункты:
Код:

cbx.addItem({data:1, label:"страна1"});
cbx.addItem({data:2, label:"страна2"});
cbx.addItem({data:3, label:"страна3"});

Создаем переменную, которая будет создавать новый объект:
Код:

var cbListener:Object = new Object();
А вот тут уже говорим, что делать при выборе какого-либо пункта:
Код:

cbListener.change = function(event_obj:Object) {
 trace("Value changed to: "+event_obj.target.selectedItem.label);
};

В данном случае флеш просто выводит надпись, тип "выбран пункт странаX". Я конечно могу написать вместо
Код:

trace("Value changed to: "+event_obj.target.selectedItem.label);
Чтонибудь вроде:
Код:

_root.countries.gotoAndPlay(2)
Но ведь тогда будет переход на 2 фрейм клипа "countries" не зависимо от того какая страна выбрана!

Как мне написать для каждой строны, свой переход??Типа того:
Код:

Страна1 = gotoAndPlay(2);
Страна2 = gotoAndPlay(3);
Страна3 = gotoAndPlay(4);

Ну помогите мне уже глупому! Одна надежда на Вас...

Alex_beginner 27.05.2008 19:20

Дак Вы товарищсч, че в label ту получаете сравнивайте с потребным (if ...label=="страна1" {переходим на соотвествующий кадр 1}, if ...label=="страна2" {переходим на соотвествующий кадр 2}, итд ) и усе будить ОК ОБИ. Лучше конструкцию switch-case использовать

джонатан 27.05.2008 19:39

А где именно надо сравнивать?
В пределах этого кода?
Код:

cbListener.change = function(event_obj:Object) {
 trace("Value changed to: "+event_obj.target.selectedItem.label);
};


Molecula 27.05.2008 19:55

джонатан, всё верно.
Код:

event_obj.target.selectedItem.label
смотрим, что в лейблах...
Код:

event_obj.target.selectedItem.data
что в датах - делаем после этого какие-то манипуляции.
Код:

event_obj.target.value
- то же что-то должно выдать.

джонатан 27.05.2008 20:12

Так чтоли?

Код:

cbListener.change = function(event_obj:Object) {
  if (event_obj.target.selectedItem.label == "страна1") {
      _root.countries.gotoAndPlay(2);}
}


alexcon314 27.05.2008 22:59

Цитата:

Сообщение от Alex_beginner (Сообщение 742071)
Дак Вы товарищсч, че в label ту получаете сравнивайте с потребным (if ...label=="страна1" {переходим на соотвествующий кадр 1}, if ...label=="страна2" {переходим на соотвествующий кадр 2}, итд ) и усе будить ОК ОБИ. Лучше конструкцию switch-case использовать

Alex_beginner, выражайтесь нормальным русским языком. Если хотите помочь - помогайте. Коверкание слов и выражений никого не украшает.

джонатан 27.05.2008 23:49

Вложений: 1
УРААА! Я сделал это! Не без Вашей помощи конечно, уважаемые друзья! Спасибо всем кто помог!

И для тех у кого вдруг появится подобный вопрос (о установке и настройке компонента ComboBox), даю вот этот, код:
Код:

// Тут задаем пункты в комбобоксе.
cbx.addItem({data:1, label:"Выбирай:"});
cbx.addItem({data:2, label:"страна1"});
cbx.addItem({data:3, label:"страна2"});
cbx.addItem({data:4, label:"страна3"});
cbx.addItem({data:5, label:"страна4"});

// Создаем Listener Object.
var cbListener:Object = new Object();

// Прикрепляем функцию к Listener Object.
cbListener.change = function(event_obj:Object) {
 if (event_obj.target.selectedItem.label == "страна1") {
      _root.countries.gotoAndPlay(2);
          } else if (event_obj.target.selectedItem.label == "страна2") {
                        _root.countries.gotoAndPlay(3);
          } else if (event_obj.target.selectedItem.label == "страна3") {
                        _root.countries.gotoAndPlay(4);
          } else if (event_obj.target.selectedItem.label == "страна4") {
                        _root.countries.gotoAndPlay(5);
          }
};

// Add Listener.
cbx.addEventListener("change", cbListener);

"cbx" - имя ComboBox'a
"countries" - имя клипа который реагирует на выбраный пункт в ComboBox


Кроме этого прикрепляю и исходник :)

Еще раз спасибо всем, за помощь!

Alex_beginner 28.05.2008 09:37

...else if...
Зачем так. Это не совсем красиво. Почему бы не использовать конструкцию switch-case. Код становиться при множественном выборе куда стройнее.

То, что касается каверканья слов - виноват, исправляюсь.


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

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