Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.04.2010, 20:45
GrMerlin вне форума Посмотреть профиль Отправить личное сообщение для GrMerlin Найти все сообщения от GrMerlin
  № 1  
Ответить с цитированием
GrMerlin

Регистрация: Feb 2010
Сообщений: 56
По умолчанию Передача данных между компонентами

Подобные темы поднимались ранее. Знаю.
Ситуация: Есть кастумные компоненты. Третий вызывается во втором, второй - в первом. В первом компоненте прописан RemoteObject со своими методами.
Цель: Отослать с помощью RemoteObject переменные с третьего компонента.
Варианты:
1) каким-то образом передать переменные с третьего компонента в первый и там уже отправить через RemoteObject по адресу (передавать переменные кроме как диспатчить события в дочернем компоненте а в родительском отлавливать и присваивать переменные с дочернего компонента переменным родительского в голову толковее пока что не лезит).
2) Описать во втором кастумном компоненте еще один аналогичный RemoteObject и передавать данные уже ему (в третьем компоненте создание RemoteObject исключено т.к. таких третьих еще несколько...).
3) Вариант, который пока что я не вижу.

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

Старый 17.04.2010, 10:20
bastrakov вне форума Посмотреть профиль Отправить личное сообщение для bastrakov Найти все сообщения от bastrakov
  № 2  
Ответить с цитированием
bastrakov

Регистрация: Nov 2009
Сообщений: 64
1) "каким-то образом передать переменные" можно event-ом. у вас вложенные компоненты, проблем не будет.
2) смотрите, если вы обьявите public переменные для компонента, то их можно связывать назквозь.

[Bindable]
public var num:Number = 0;

вот это в компоненте можно привязывать к другому компоненту.

component2.num = component1.num;
component3.num = component2.num;

все. ваша num из 1-го компонента в 3-ем. обратно так же.


а вот так вы можете отслеживать изменения public переменных для вложенного компонента:
if (ChangeWatcher.canWatch(component2,'num'))
ChangeWatcher.watch(component2,'num',updData);

private function updData(event:Event):void {
и тут чет делаем. во

Старый 18.04.2010, 00:53
GrMerlin вне форума Посмотреть профиль Отправить личное сообщение для GrMerlin Найти все сообщения от GrMerlin
  № 3  
Ответить с цитированием
GrMerlin

Регистрация: Feb 2010
Сообщений: 56
Т.е. можно с 1го компонента добраться до переменной с 3го компонента через промежуточную переменную 2го компонента... Идея хорошая. Про ChangeWatcher еще не слыхал... Распишите пожалуйста по-подробнее по поводу
Цитата:
if (ChangeWatcher.canWatch(component2,'num'))
ChangeWatcher.watch(component2,'num',updData);
... Куда это записывать? В первый (отцовский) компонент, но на какое событие, или что-то подобное... И во втором тоже самое сделать можно на третий компонент.

В общем, решил задачу через переписывание событий и присваивание переменных одного компонента другому. в 3м генерирую событие и отлавливаю во втором, попутно присваиваю переменной с 2м компоненте переменную с 3го... Аналогично поступаю с 1м компонентом... Но все таки что это за ChangeWatcher, распишите, пожалуйста!


Последний раз редактировалось GrMerlin; 18.04.2010 в 02:29.
Старый 23.04.2010, 20:19
GrMerlin вне форума Посмотреть профиль Отправить личное сообщение для GrMerlin Найти все сообщения от GrMerlin
  № 4  
Ответить с цитированием
GrMerlin

Регистрация: Feb 2010
Сообщений: 56
А возможно ли как-то обратится с дочернего компонента к родительскому без dispatchEvent? Что-то вроде как напрямую.

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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