Показать сообщение отдельно
Старый 19.08.2010, 23:57
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 2  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Помоему, почти у всех есть такой фреймворк, только вот он рарзабатывется в рамках компании и не все выкладывают

Цитата:
Все компоненты должны быть легко скинируемы, причем, хочется что то вроде SkinManager, где есть дефолтный скин для каждого компонента - чаще всего в любом приложении 95% всех кнопок отличаются только надписями на них - который легко можно поменять в рантайме
В 99% скины НЕ надо менять в рантайме
Чем делать отдельно классы скинов раз в 10 гибче и проще
Сделать компонент, который легко поменять при наследовании и который содержит достаточно методов для скинования, наример upBitmapData, downBitmapData и т.д.
Т.к. при компонентах сложнее кнопки в 50% после получения дизайна от художников этих полей НЕ хватает для правильного позиционирования частей компонента внутри него - делаем наследника и там позиционируем

Как это легко скиновать без скинов каждый раз при создании кнопки?
Очень просто!
Делаем статичную фабрику, называем ComponentFactory
и лепим ей поля:
Код AS3:
getSimpleButton(text:String):ICommonButton
getDialogButton(text:String):ICommonButton
...
и т.д.
Потребовалась кнопка "скина" Simple - вызываем getSimpleButton("button") - PROFIT!

А настраиваем параметры для конкретного вида внутри этих методов.
Не хватает настроек для воплощения задумки дизайнера? - Создаем новый класс с интерфейсом ICommonButton - наследуем от чего хотим
И меняем единственный метод - getSimpleButton(text:String).
(а со скинами пришлось бы "растачивать" систему скинования, добавляя новый функционал)

P.S. Имхо если создавать отдельные классы скинов - никогда в них не заложишься функционалом настолько, чтобы покрыть всю творческую мощь дизайнера


Последний раз редактировалось expl; 20.08.2010 в 00:04.