Продолжаю работать над GUI фреймворком. Известный уже давно PROFPicker, успешно интегрирован в минифреймворк, и принял стиль, который я искал, и вот собственно нашёл. Фреймворк пока что состоит из Picker, GradientBar, а также бонусного класса MultiColumnText Архитектура постоянно меняется… пока что не удаётся остановится на чем то одном, приходиться экспериментировать…
Работа элементов
Как это работает:
Picker в работе очень прост, нажимаем, и выбираем интересующий нас цвет.
GradientBar немного хитрее. Ползунки свободно двигаются, и можно менять их местами, при нажатии по полоске, добавляется в том же месте новый ползунок, ползунки можно отрывать, просто немного оттягивая их вниз, и внизу отпуская, а также двойной щелчок по ползунку вызывает окно выбора цвета.
Наконец то добрались ручки до известного класса отражения от Pixelfumes. В классе были произведены небольшие изменения, для удобства работы, а также немного оптимизирован код. Структура класса осталась идентичной, те же методы, те же параметры.
Отличия следующие:
- улучшена производительность private метода update, для отражения контейнеров с анимацией;
- проработана типизация, логика работы, и убраны медленные getChildByName;
- нет ограничения на тип контейнера, теперь это может быть Sprite;
- отражение сглаживается;
По поводу демо (слева – Prof Reflect, справа – Pixelfumes Reflect). При масштабировании можно заметить артефакт «битого» изображения у Pixelfumes. Ну а при тесте производительности небольшой прирост в производительности за счет использования Sprite. С обновлением анимации прирост был бы намного больше, просто лень было это реализовывать в демо…
Download – Reflect ver. 1.0
Смотреть в действии
Недавно мною был улучшен класс Reflect от Pixelfumes созданный ими еще в 2007 году. Есть там незамысловатый метод обновления отражения. Собственно что бы прояснить для себя преимущества различных подходов для оптимизации, и был создан этот тест, результаты говорят сами за себя.
Смотреть в действии
Вот такой вот незамысловатый эксперимент с эффектом Motion Blur (размытие при быстром перемещении объекта). Качественный эффект получился? (Что бы остановить анимацию, кликайте по флешке)
Одно из практических применений смотреть здесь.
Смотреть в действии
Оформление (skin) было навеяно недавней покупкой Xbox. Так же преследовал цель, сделать как можно компактнее. Компонент откликается на Event.CHANGE и Event.SELECT. Предоставляет возможности широкой настройки (можно настроить степень сворачивания элементов выбора страниц(в примере CLOSE_RATIO = 0.3) и т.п.)
Просмотр