Просмотр полной версии : Собственные фреймворки. У кого что?
С недавних пор обзавёлся собственным фреймворком с кучей полезных классов, нацеленных на удобное создание игр, программной анимации, web-дизайна. Что туда попало:
Собственный твинер с надстройками анимации фильтров
Мультизагрузчик файлов, ресурсов
Локализатор на разные языки
Cобственные простенькие ui компоненты.
Полезные утилиты от работы с векторами, до реализации задержанных вызовов DelayedCalls, и работы с png прозрачностью, vkontakte
Серверный модуль распределения запросов, модуль соединения с p2p
Вопрос номер 1: У кого есть опыт в написании полезностей для себя любимого? Кто может поделиться идеями, того что облегчает жизнь в разработке web-приложений? Может У Вас есть какое-то особенное программное решение, которым Вы гордитесь - расcкажите ;)
Вопрос номер 2: Чувствую, что не хватает рантайм стилизатора компонентов (аля MXML велосипед), пока не придумать как сделать его удобным для себя. Поделитесь мыслями реализации этого чуда.
Это пост меряния? :taunt:
Выкладывайте ваши фрэймворки)
по сути:
Есть, конечно, много всяких полезностей, часть обычно выкладываю здесь в блогах, но больше и чаще руки не доходят..
Из неопубликованного (и/или в постоянной разработке)
мега-пупер MVC фрэймворг)
библиотека для построения GUI. Не флекс, а скорее CSS - шкурки скинуются бимапой scale9/tiling итп - всего десяток объектов - формы, кнопки, чекеры, скроллы, титулы контейнеры для иконок (сетки) - используется для выдачи в DirectX (взрослая ММО аля WOW) через f-in-box - поэтому всё жутко наоптимизированно и на фрэймворк не тянет, т.к. для реюза много переписывать заново придётся)
библиотека анимации по секвенции кадров (расширенное подобие AnimatedBitmap) и всяческие инструменты для создания секвенций и анимаций (jsfl/maxScript/air)
эмулятор сервера (передача по localConnection) для тестирования (поддеживает AMF \Json\ protoBuf\ +моё расширение протокола: protoBuf With Alias
мультисоциальный фрэймворк (вконтакте-моймир-фэйсбук)
сервер а-ля Смартфокс на Эрланге (даже не альфа - прототип)
куча всякого хлама, который таскаю с собой c конторы в контору, типа класса форматирования числительных и утилиты работы с XML
И часть разработок, которые, конечно, разгласить не могу)
Если что интересно - пишите выложу..
Psycho Tiger
11.06.2010, 22:21
Я всё скинирование делаю сеттерами/геттерами или передаю в конструктор.
Из своего есть всякие компоненты, ерунда для связей с сервером и работе с вконтакте апи, всякая приятная мелочь вроде хелфбаров для игр и т.д. Чаще всего пишу класс четко под текущую задачу, если нужно потом что то похожее, беру, допиливаю чтобы он был красив и универсален для обоих вариантов использования. Если уже пользую в 3 раз, сажусь, думаю что вообще туда можно прикрутить и пишу всё подряд, даже то, что в текущем проекте не понадобится.
Из не своего использую почти весь фреймворк slin`а (спасибо тебе!)
Локализатор на разные языки
А как вы подошли к этому вопросу?
Psycho Tiger
11.06.2010, 23:11
Если интересно, то я подходу так:
Синглтон с методами getInfo(id:int):String, getDescription(id:int):String.
Если интересно, то я подходу так:
Синглтон с методами getInfo(id:int):String, getDescription(id:int):String.
не самое удачное решение.. хотя проблема касается только многомодульных проектов.
Я всё-же предпочитаю работать через передачи ссылки на менеджер локализации через интерфейс модуля.
Пока, что локализация - это просто xml словари с переводом слов.
Хочется отделить это дело полностью от кода, в виде системы скинования. Что-то вроде CSS файла. Грубо говоря есть контейнер-компонент к которому применяется файл стиля:
//Конструктор одного из компонентов контейнер-компонента.
//В коде что то типа var joinGame:IButton = createUI("JoinGame");
JoinGame.@BitmapButton {
width: 70, height: 20, label: "Войти в игру", skin: skins.vista.ButtonSkin
}
//Состояние. В коде что-то типа setState(joinGame, "passwordIsEmpty");
JoinGame.passwordIsEmpty {
enabled: false, tipStatus: "Вы не заполнили пароль"
}
//Группа состояний. В коде что-то типа setState(this, 'waitingForConfirmation");
.waitingForConfirmation{
JoinGame {enabled: false}
Login {enabled:false}
Password { enabled: false}
}
Программировать долго, хотел спросить стоит ли. Как удобнее сделать? Мне кажется, это будет удобным, но не хочется сразу лезть в дебри. Хотел узнать, кто чем пользуется.
Я вовсе не хочу ни с кем мериться. Хочу позаимствовать чужого опыта, узнать, что делают люди для своего удобства.
Psycho Tiger
11.06.2010, 23:45
Я всё-же предпочитаю работать через передачи ссылки на менеджер локализации через интерфейс модуля.
Не совсем понял, расскажи. Звучит интересно :)
т.е. я предпочитаю заводить в каждом модуле использующем локализацию внутренний объект
var languageManager:ILanguageManager; у которого есть getInfo(id:int):String, getDescription(id:int):String.
а сам объект заводить в главном классе (контроллллллллере, менеджере загрузки итп)
и передавать его в качестве ссылки при инициализации модуля.
немного неудобно но помогает избежать кучи проблем.
а синглтон - это по сути глобальный объект и фиг знает что с ним может случиться..
Что-то вроде CSS файла. Грубо говоря есть контейнер-компонент к которому применяется файл стиля:
Типа акого: http://etcs.ru/files/friends.css
? :quiet:
А локализация у нас идет глобальным методом getLocale, в который передаётся ключ и тексты для замены (или значения).
Что-то общее наблюдается =) Расскажи, как эта штука работает.
CSS парсер с нуля писался или на базе уже готового? Какие основные требования к скинируемым компонентам?
Psycho Tiger
12.06.2010, 12:30
Котяра: а, понял. Ну у меня не совсем синглтон, у меня несколько статичных паблик методов. С ними ничего не случится.) По сути, не совсем синглтон, но если рассматривать класс как тот самый единственный объект - то вполне. Хотя, тогда получается что каждый класс сам себе синглтон, но это уже проблемы терминологии. Главное донести суть до собеседника.
А локализация у нас идет глобальным методом getLocale, в который передаётся ключ и тексты для замены (или значения).
Т.е. статик метод getLocale, в который передается, например "Who is mrs. Smith?", а там
case "Who is mrs. Smith?": return "Кто мрс. Смит?";
В чем практичность гонять целые строки? Ошибка опечатки очень велика...
Т.е. статик метод getLocale, в который передается, например "Who is mrs. Smith?", а там
case "Who is mrs. Smith?": return "Кто мрс. Смит?";
В чем практичность гонять целые строки? Ошибка опечатки очень велика...
Нет, там строковые ключи, типа «common.errors.itemNotFound». Ключи представляют собой иерархическую структуру, сами значения во внешних бинарных файлах. getLocale — функция, а не класс и не статический метод.
Добавлено через 1 минуту
Что-то общее наблюдается =) Расскажи, как эта штука работает.
CSS парсер с нуля писался или на базе уже готового? Какие основные требования к скинируемым компонентам?
С нуля, само собой. Требований никаких, на уровне CSS можно описать хоть послойный скин с разнородными элементами.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.