![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2008
Сообщений: 41
|
Здравствуйте!
Помогите, пожалуйста, решить задачу: Делается компонент, панелька как во флексе панель свойств компонентов (наверное, многим более известна по 3д-максу): прямоугольная область, в которой содержится произвольное количество панелей, каждая из которых может сворачиваться до своего заголовка. При этом дочерние панели имеют ширину контейнера, а по Y всегда (свёрнуто/развёрнуто) следуют точно друг за другом. Так вот я сделал свой компонент - дочерняя паналь, содержащий кнопку с заголовком и Canvas (должен исчезать или появляться при нажатии на кнопку). Общий котейнер - VBox. Так вот, при уменьшении размера или visible = false для Canvasa дочерней панали координаты других дочерних панелей должны пересчитываться (ведь в VBox дети идут друг за другом). Я не знаю, как это обеспечить.. Таким образом, основной вопрос - как принудительно расставить по местам детей VBox после программного изменения их размеров. А вообще, может я концептуально что-то не так делаю? Получается забавная смесь из mxml и as3. Плюс приходится в as3 из-вне запихивать содержимое в дочерние панели P.S. Простите новичка за глупые вопросы ) |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 28
|
Если я правильно понял - проблема в обращение к нужным контейнерам.
Чезе id контейнера пробовали работать ? |
|
|||||
|
Регистрация: 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. |
|
|||||
|
Modus ponens
|
Я так понимаю, что панели - это какие-то однотипные компоненты, которые нужно расставить один под другим, при этом они должны менять высоту и при этом весь родительский компонент должен менять высоту вместе с ними? На мой взгляд, проще всего будет сделать такую штуку в виде аккордеона.
>> List вроде вообще не может содержать внутри себя другие компоненты Лист содержит внутри себя рендереры, которые и есть "другие компоненты". Т.е. сделать свой компонент, не важно из чего, добавить ему функционал по изменению своей высоты и сделать этот компонент либо рендерером в листе, либо в аккордеоне. Лист в этом отношении может быть иногда немного по-лучше т.как может создавать детей "по требованию", т.е только тогда, когда они видны, но если этот функционал не нужен, тогда, как мне кажется, аккордеон - самое то. В принципе вы конечно можете пробовать дорабатывать VBox чтобы у него появился такой функционал. Ну а с другой стороны - смысл использовать компоненты в том, чтобы не писать код самому, а если их нужно переделывать, то проще уже самому написать. По крайней мере будет быстрее и проще работать.
__________________
Hell is the possibility of sanity |
|
|||||
|
Цитата:
вызвать метод invalidateSize () Если ты заморачиваешься с такими вещами прочитай статью http://flexcomps.wordpress.com/2008/...nt-life-cycle/ или мою попытку перевести эту статью Жизненный цикл Flex компонентов |
|
|||||
|
Регистрация: Oct 2008
Сообщений: 41
|
Пока что-то не получается. Разбираюсь.
Можно попросить примеры? Скажем, как можно заставить Accordeon показать сразу несколько панелей. Или как сделать List из кнопок. С invalidateSize что-то тоже пока не получается. И если вызвать measure тоже ничего |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:15. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|