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

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

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

Регистрация: Oct 2008
Сообщений: 41
По умолчанию Resize детей контейнера

Здравствуйте!

Помогите, пожалуйста, решить задачу:

Делается компонент, панелька как во флексе панель свойств компонентов (наверное, многим более известна по 3д-максу): прямоугольная область, в которой содержится произвольное количество панелей, каждая из которых может сворачиваться до своего заголовка. При этом дочерние панели имеют ширину контейнера, а по Y всегда (свёрнуто/развёрнуто) следуют точно друг за другом.

Так вот я сделал свой компонент - дочерняя паналь, содержащий кнопку с заголовком и Canvas (должен исчезать или появляться при нажатии на кнопку). Общий котейнер - VBox. Так вот, при уменьшении размера или visible = false для Canvasa дочерней панали координаты других дочерних панелей должны пересчитываться (ведь в VBox дети идут друг за другом). Я не знаю, как это обеспечить..

Таким образом, основной вопрос - как принудительно расставить по местам детей VBox после программного изменения их размеров.



А вообще, может я концептуально что-то не так делаю? Получается забавная смесь из mxml и as3. Плюс приходится в as3 из-вне запихивать содержимое в дочерние панели

P.S. Простите новичка за глупые вопросы )

Старый 04.10.2009, 19:49
PhilRus вне форума Посмотреть профиль Отправить личное сообщение для PhilRus Найти все сообщения от PhilRus
  № 2  
Ответить с цитированием
PhilRus

Регистрация: Aug 2009
Сообщений: 28
Если я правильно понял - проблема в обращение к нужным контейнерам.
Чезе id контейнера пробовали работать ?

Старый 04.10.2009, 20:22
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Там VBox вообще не в кассу, пробуйте List / Accordion, у VBox такого функционала отродясь не было...
__________________
Hell is the possibility of sanity

Старый 05.10.2009, 11:38
pavel___zzz вне форума Посмотреть профиль Отправить личное сообщение для pavel___zzz Найти все сообщения от pavel___zzz
  № 4  
Ответить с цитированием
pavel___zzz

Регистрация: Oct 2008
Сообщений: 41
Пока не понимаю. List вроде вообще не может содержать внутри себя другие компоненты (или я настолько отстал от жизни? ) ). Accordion - пожалуй, наиболее похож на то, что надо получить, но хотелось бы всё таки сделать немного по-другому.

Что до VBox - я уже слегка разобрался. У его детей нужно поменять height, а затем у него самого вызвать updateDisplayList

Добавлено через 6 минут
Правда осталась другая проблема: у дочернего компонента (состоит из Button и Canvas), если изменить высоту Canvas, height родителя не меняется, поэтому у общего контейнера updateDisplayList ни к чему не приводит

P.S. wvxvw, а всё-таки поясните, пожалуйста, насчёт Accordion или List. Видимо, я совсем не понял, что вы имели в виду


Последний раз редактировалось pavel___zzz; 05.10.2009 в 11:48.
Старый 05.10.2009, 14:39
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Я так понимаю, что панели - это какие-то однотипные компоненты, которые нужно расставить один под другим, при этом они должны менять высоту и при этом весь родительский компонент должен менять высоту вместе с ними? На мой взгляд, проще всего будет сделать такую штуку в виде аккордеона.

>> List вроде вообще не может содержать внутри себя другие компоненты
Лист содержит внутри себя рендереры, которые и есть "другие компоненты".

Т.е. сделать свой компонент, не важно из чего, добавить ему функционал по изменению своей высоты и сделать этот компонент либо рендерером в листе, либо в аккордеоне. Лист в этом отношении может быть иногда немного по-лучше т.как может создавать детей "по требованию", т.е только тогда, когда они видны, но если этот функционал не нужен, тогда, как мне кажется, аккордеон - самое то.
В принципе вы конечно можете пробовать дорабатывать VBox чтобы у него появился такой функционал. Ну а с другой стороны - смысл использовать компоненты в том, чтобы не писать код самому, а если их нужно переделывать, то проще уже самому написать. По крайней мере будет быстрее и проще работать.
__________________
Hell is the possibility of sanity

Старый 05.10.2009, 15:14
Gubber вне форума Посмотреть профиль Отправить личное сообщение для Gubber Посетить домашнюю страницу Gubber Найти все сообщения от Gubber
  № 6  
Ответить с цитированием
Gubber

Регистрация: Sep 2000
Адрес: Россия, Обнинск
Сообщений: 84
Отправить сообщение для Gubber с помощью ICQ
Цитата:
Сообщение от pavel___zzz Посмотреть сообщение
Добавлено через 6 минут
Правда осталась другая проблема: у дочернего компонента (состоит из Button и Canvas), если изменить высоту Canvas, height родителя не меняется, поэтому у общего контейнера updateDisplayList ни к чему не приводит
Дело в том, что если ты меняешь размеры дочерних объектов, то тебе надо ВРУЧНУЮ сказать окну пересчитать размеры.
вызвать метод invalidateSize ()
Если ты заморачиваешься с такими вещами прочитай статью http://flexcomps.wordpress.com/2008/...nt-life-cycle/
или мою попытку перевести эту статью
Жизненный цикл Flex компонентов
__________________
flex vs java
ICQ#65310126

Старый 05.10.2009, 21:45
pavel___zzz вне форума Посмотреть профиль Отправить личное сообщение для pavel___zzz Найти все сообщения от pavel___zzz
  № 7  
Ответить с цитированием
pavel___zzz

Регистрация: Oct 2008
Сообщений: 41
Пока что-то не получается. Разбираюсь.

Можно попросить примеры?
Скажем, как можно заставить Accordeon показать сразу несколько панелей.
Или как сделать List из кнопок.

С invalidateSize что-то тоже пока не получается. И если вызвать measure тоже ничего

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

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

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


 


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


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