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

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

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

Регистрация: Aug 2010
Адрес: Саратов
Сообщений: 185
По умолчанию Обращение к BorderContainer.Uicomponent.TextField

Как можно обратиться к текстовому полю, которое находится в UI компоненте, который в свою очередь находиться в border контейнере.
Код:
p1.getElementAt(0).getChildByName('tf').text = 'good';

либо

p1.contentGroup.getElementAt(0).getChildByName('tf').text = 'good';
рождают ошибку: 1061: Обращение к возможно неопределенному методу getChildByName через ссылку статического типа mx.core:IVisualElement.

Старый 20.11.2011, 13:07
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
В интерфейсе IVisualElement нет метода getChildByName, как минимум надо привести к UIComponent и дождаться CREATION_COMPLETE.
Подобный подход, мягко говоря, не верен.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 21.11.2011, 08:49
sstotenkopf вне форума Посмотреть профиль Отправить личное сообщение для sstotenkopf Найти все сообщения от sstotenkopf
  № 3  
Ответить с цитированием
sstotenkopf
 
Аватар для sstotenkopf

Регистрация: Aug 2010
Адрес: Саратов
Сообщений: 185
Цитата:
Сообщение от alatar Посмотреть сообщение
В интерфейсе IVisualElement нет метода getChildByName, как минимум надо привести к UIComponent и дождаться CREATION_COMPLETE.
Подобный подход, мягко говоря, не верен.
Спасибо, помогло)

Код:
var u:Object = p1.getElementAt(0);
	var uic:UIComponent = u as UIComponent;
	var tf:Object = uic.getChildByName('nic');
	var textf:TextField = tf as TextField;
	textf.text = 'Good';

Старый 21.04.2014, 15:22
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 4  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
А как верно? Если стоит задача обращаться к компоненту по строке?

Старый 23.04.2014, 13:31
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 5  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
В каких ситуациях у вас возникает такая задача?
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 24.04.2014, 10:31
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 6  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Например недавно была ситуация, когда на сцене было много однотипных компонентов, и чтобы оптимизировать количество одинакового кода я их id именовал так "comp1", "comp2" и т.д., а внутри класса я к ним обращался так
Код AS3:
        this["comp" + numberOfComponent]
тогда этот подход разрулил эту проблему. А вообще, время от времени, возникают такие ситуации, когда надо что то подцепить со сцены по имени, возможно это говорит о неправильной архитектуре и кривых руках, но с кодом приходится работать разным, и не всегда своим, и хочется сделать задачу быстро, а не переписывать кучу классов ради "правильной архитектуры"

Старый 24.04.2014, 11:12
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Ну а чем этот подход не нравится?

Старый 24.04.2014, 12:01
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Например недавно была ситуация, когда на сцене было много однотипных компонентов
Сложить ссылки на них в массив... использовать DataGroup в качестве контейнера, а компоненты сделать на основе DataRenderer... достать ссылки на компоненты из mxmlContent, если контейнер Group или его наследник и дочерние элементы добавлялись в mxml... и т. д.

Это:
Код AS3:
this["comp" + numberOfComponent]
и вне флекса знатный костыль.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 24.04.2014, 17:02
PainKiller вне форума Посмотреть профиль Отправить личное сообщение для PainKiller Найти все сообщения от PainKiller
  № 9  
Ответить с цитированием
PainKiller
 
Аватар для PainKiller

блогер
Регистрация: Sep 2011
Адрес: Москва
Сообщений: 533
Записей в блоге: 4
Я согласен, практически всегда можно обойтись без getChildByName() но, это не говорит на мой взгляд, что этот метод использовать не верно. Аргументы в пользу неверности так и не прозвучали))

Старый 24.04.2014, 17:35
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
getChildByName у вас далеко не всегда получится использовать. Большинство spark компонентов (в принципе все наследники SkinnableContainer) во флексе добавляют дочерние компоненты не в себя, а в группу внутри скина.
Flex Framework, как следует из названия, является фреймворком и как следствие предполагает и диктует определенные правила построения приложения. Игнорируя это вы обречены на постоянный отлов косяков и неочевидного поведения при написании приложения. Ну и на вопросы типа "как почесать пятку просунув руку через рот".

Добавлено через 12 минут
P.S. Ну и свойство name, во флексе, по-умолчанию заполняется значением ClassName + counter.
__________________
משיח לא בא
משיח גם לא מטלפן

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

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

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


 


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


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