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

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

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Question Arrange child ручками

Всем доброго времени суток)
Как избалованное дитя прогресса привык к автоматически настраиваемым контролам в ЯВУ. Решил сделать нечто подобное во флэше. Сделал механизм когда свойства настраиваются через админку например:
cntrlWidth = 200 - ширина 200 точек
cntrlHeight = 30% - ширина 30% от родительского
Застрял когда дошел до реализации элементов контролов которые являются контейнерами для других элементов. Необходимо сделать поддержку еще свойства Auto для вложенных элементов чтобы элементы подстраивались под родителя, и свойства ArrangeChild для контрола-контейнера для определения направления как их выравнивать.
Объясню на примере имеется окно, в нем должно быть две панели. Верхняя под меню у нас будет скажем шириной 100% а высотой 50 точек, а вложенная нижняя должна быть 100% в ширину и в высоту 100% высоты родителя - 50 точек занятых верхней панелью.
Механизм расставляющий элементы и подгоняющий по расположению их внутри группы я реализовал. Теперь осталось определиться с алгоритмом как определять свойства и в какое время их устанавливать.
Объекты самые разные в админке, жесткой привязки нет, так что можно и картинки настраивать, и контролы и флэшки без кода... Так что необходима концепция как все это делается а не способ реализации для частного случая.
Если есть светлые мысли выведите из тьмы?
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

Старый 14.01.2009, 13:19
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А зачем контейнер позиционирует детей, когда они сами могут встать туда, куда нужно?

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Цитата:
Сообщение от __etc Посмотреть сообщение
А зачем контейнер позиционирует детей, когда они сами могут встать туда, куда нужно?
Чтобы реализовать резиновую флэшку. Прижать элемент к краю не проблема. Проблема если нужно несколько элементов организовать в группу по расположению. Например организовать меню которое будет располагать элементы в строки справа налево и по заполнению строки меню будет расти вверх.
Пока после всех размышлений пришел только к одному варианту:
  1. Контейнер получает свойство как выравнивать
  2. Соответственно настроек инициализируются размеры вложенных элементов(по размеру содержимого, из настроек в точках или в процентах от контейнера).
  3. Каждому вложенному элементу назначается свойство 'прижаться к краю такому то'.
  4. Cначала попорядку внутри контрола прижимаются к краям объекты, при этом область для размещения в контейнере(то бишь его размеры) уменьшается на размер размещенного элемента
  5. После каждого прижатого элемента переопределять размеры всех оставшихся вложенных элементов относительно изменившихся размеров контрола
  6. Оставшиеся элементы согласно установленного порядка располагаются в контейнере оставшейся свободной области по их реальным размерам
  7. Размер контрола-контейнера восстанавливается до прежних размеров для дальнейшей работы.
Пока ничего более разумного не придумал
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

Старый 14.01.2009, 14:03
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Так просто надо написать контролы, типа TileList, List. Только они вложенные элементы сами позиционируют в таком случае.

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

Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
Умный в гору не пойдет...)
Я понимаю что будут кричать про изобретение велосипеда. Но в данном случае я не просто собираю велосипед, я учусь AS3.
Содержимое контейнера определяется самим пользователем на стадии настройки элемента. Каждый вложенный элемент обладает такими же возможностями для настройки. Таким образом заранее что и с чем будет связано не известно. Инициализация свойст каждого элемента выполняется в два этапа, до добавления в список отображения и после. Все это работает прекрасно если размеры задаются определенные. А вот с резиновым содержимым когда не известно что и где будет находиться получается немножко сложнее. Мне нужно реализовать привязку элементов ко всем краям и внутри них сделать рабочую зону и так чтобы это подгонялось под размер плеера) Я уже сделал меню наподобие TileList, размеры меню и вложенных элементов при этом также задаются жестко. Загвоздка как раз в том как сделать чтобы TileList подгонял свои размеры по настройкам и при этом все вложенные элементы имели такую же возможность.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ

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

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

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


 


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


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